search
trait Collection[A] {
def search[B >: A](e: B): SearchResult
def search[B >: A](e: B, i: Int, j: Int): SearchResult
}
search procura na coleção o primeiro elemento que é igual (==) ao elemento e e retorna um
Found contendo o índice onde foi encontrado.
Se e não pode ser encontrado na coleção, um InsertionPoint contendo
o índice que o elemento ocuparia se fosse adicionado à coleção.
A pesquisa pode ser restrita no intervalo [i, j).