hashtables now store only copies of the values passed to them. The values are cloned, then the clones are hashed. These clones are destroyed with the hashtable (if possible)
HashTable now copies keys. HashTable hashes on the ptr e.g. void* obj = object_new(), when used as a key, is hashed as a pointer, not as an Object struct. HashTable destroys its key copies upon deletion