Cache#fetch_multi returns a Hash instead of an Array

The current implementation of `fetch_multi` returns an array and has no means to easily backtrack which names yielded which results. By changing the return value to a Hash we retain the name information. Hash#values can be used on the response if only the values are needed.

I've been attempting to add `fetch_multi` support to dalli: mperham/dalli#380 and discovered the disparity between methods. @mperham and I agree that the result should be a Hash rather than an Array. Ideally, and practically, all implementations for the various cache stores should return the same result.

This overwrites the original behavior from rails/rails#10234