Add `Hash#map_values` to ActiveSupport to simplify a common pattern

Keys remain the same, but the values change.

Didn't get a chance to convert existing code, I'll skim through the code base to make use of this later this afternoon.
In case it helps, maybe refactor the code as follows?:

    def transform_values(&block)
      each_with_object(self.class.new) do |(key, value), result|
        result[key] = yield value
      end
    end

This would eliminate the need for an instance variable.