Search for friends

#22 

This depends on #35 . Once that's merged, I'll rebase, and this PR will be more manageable.
I disagree that it's tightly coupled. A `source` need not be a controller. It could be anything that implements the three things mentioned in the comments in `AutoCompleteComponent`.