Python 3.10 Support
In Python 3.10, NaNs no longer hash equal, instead they are hashed by their object's address. (See: https://bugs.python.org/issue43475)
Replace that behaviour by passing the address of the object to the hash() function.
This is all rather messy, I'm sure someone more familiar with C++ templates can do something a lot tidier...
Fixes: #20 (closed)