Add search result caching

These PRs add the ability to cache search results to reduce load on
backend dbs.

For chef_wm, the cache defaults to a no-op cache.