It feels surprising to me that each_key and each_value still use the old closure-based iteration protocol.
I think it would be better if they were replaced with keys and values methods that return new-style iterators.
I can send a pull request, unless there are objections.