VID-2077 Treat negative caching differently

When there are no results, cache for a shorter amount of time.

https://wikia-inc.atlassian.net/browse/VID-2077
FYI, I basically moved all the logic for cache() to the more generic cacheWithOptions and then updated cache() to call that method.  This allows the 50+ usages to remain unchanged while providing a better way to define how things are cached.