Hash core ext conditional definition

Define core ext hash methods only if they do not exist already. If we have this for other core exts, we should have it for `Hash` as well.


Also, it struck me that those methods are pulled straight from Rails (ActiveSupport) source code. Shouldn't we include info about that in comments or somewhere?

To be honest, I have no idea how this licensing thing works ;) Asking for a friend (cc @steveklabnik)