General Caching Query Runners cleanup (40% query time reduction for HLL)

* Add type strictness to CachingClusteredClient.
* Add background caching to CachingClusteredClient. Gives between 0% and 5% query speed increase.
* Add @BackgroundCaching annotation for injected ExecutorService items
* Add `numBackgroundThreads' configuration options to CacheConfig
* Add unit tests for CacheConfig
* Add an abstract caching query runner class, currently it doesn't do anything exceppt simply make the two caching queries distinct.
* Add caching to CachingQueryRunner. Gives up to a WHOPPING 40% reduction in query time on HLL queries
* Updated docs with more info on cache settings.
`context` most everywhere else is `String,Object`  but here it is `String,List`. Adding new config to this test breaks unless the config is a list. It just happens to be empty here. CachingClusteredClientTest seems to have numerous uses for `context` as a `Map<String,List>`, so I'll revert it for now until a better use case turns up in CachingClusteredClientTest.

The original change was so that I could pass in context options to the query during test time.