HashAny hashes an arbitrary Go value (the result of json.Unmarshal) in a
canonical way using the provided hasher. It returns a 64-bit non-cryptographic hash.
HashJSON takes a blob of JSON, unmarshals it, and returns a 64-bit hash using the provided hasher.
If there's an error unmarshaling, it returns 0 and the error.