Result filtering on search (also known as Partial Search)

First take at refactoring search to allow selective results, rather than returning the whole thing.
I think we can have a `do_search` method with this signature and make the existing search method call `do_search` by converting it's input into an args hash.