unify cache key creation in a private method. make the cached_response
property available as public so callers can easily determine if they
got a cached result
look more closely at check_cache() results to differentiate between a
failed cache lookup and an original empty response.
fix false positive matching on cached command names
bunch of cache related changes. Remove the cache_keys data structure to
simplify things and avoid redundant cache expiration checks.
work on partial cache bust