Add support for cache.fetch_multi through new cache_collection! method

added new cache_collection! method to use fetch_multi (if supported by the cache, otherwise iterates over the collection using fetch)

In my tests, this was up to 3x faster than using cache! to iterate over a collection.