mapConserve
trait List[A] {
def mapConserve[B >: A](f: (A) => B): List[B]
}
mapConserve aplica a função f a cada elemento da List e o
retorna intacto se cada elemento transformado for igual
(em termos de eq) para o elemento a partir do qual foram obtidos.
Se pelo menos um elemento transformado não for igual (em termos de eq) a
elemento original, esta função cria uma nova List composta.
para os resultados transformados.