Consistently returns the same string for the same object.
To support maps and sets in advance of the
Set soon to be provided
hash allows us to emulate these collections.
Object.hash algorithm depends on a
WeakMap shim to assign random
consistent hashes to objects.
In other languages, the hash function would return an integer since it would be
used to index into an array.
hash must return strings suitable for property names.
Because arrays are also used as tuples, the consistent hash takes into account the array’s content, so equivalent tuples will return the same consistent hash. This allows tuples to be used in sets and map keys, provided they are not modified.