[WIP] Fix ht interface

Resubmit from #105 onto master
What's a hash in the known form?
It is _completely_ common for hash table implementations to require the user to provide a hash function. See the C++ STL, or uthash, or ...
Hash functions may be provided for known standard types, but _no one_ would take the binary data of an object and compute a hash from that data, if the object may possibly not be a POD.