Search for friends

#22 

This depends on #35 . Once that's merged, I'll rebase, and this PR will be more manageable.
This is explained a little more in my comments in `AutoCompleteComponent`. A `source` is just a thing that is able to provide the `AutoCompleteComponent` the data it needs. 

The flow of data goes like this:
- a user types something into the autocomplete box
- the `AutoCompleteComponent` sets its `source`'s `query` to whatever got typed in
- then the `AutoCompleteConponent` asks its `source` for some `results` based on the `query`
- finally the `AutoCompleteComponent` uses the `formatSuggestion` method on its `source` to format the suggestions appropriately.

It's sort of an ad hoc thing, and there is probably a better way to do it.