/search can return results in a hash

This lets clients request a hash, which lets us do two things:

1. we can add more data to the response (eg totals, facet data...)
2. we can selectively migrate clients to use the hash format