A hashing function on keys. It must be such that if two keys are
equal according to equal, then they have identical hash values
as computed by hash.
Examples: suitable (equal, hash) pairs for arbitrary key
((=), Hashtbl.hash) for comparing objects by structure, and
((==), Hashtbl.hash) for comparing objects by addresses
(e.g. for mutable or cyclic keys).