Prevent entry order changing Hash#hash value

The previous implementation of the Hash#hash method was affected by the
order that the key/value pairs were returned from the internal trie's
each method. This meant that two Hashes that appeared identical would
fail an equality check because their hash values would be different.

Sorting the keys before building up the hash value is a simple (and
obvious) way to correct this.