V3 low level search

I wanted the ability to pass a full object to the search function - so I can use it as a low-level method and write some other stuff to sit on top of it.
I like wrapping these sort of things in meaningful functions,

```
var isSearchBodyTemplate = function(..) {
    return typeof term === 'object' && 'queryString' in term && 'queryContext' in term;
}
```