Free keys and values in hash tables

You can now provide two optional callbacks (`free_key` and `free_value`) that will cause your hash table to take ownership of the keys and values that it contains.  The keys and/or values will be automatically freed (using the provided callbacks) when entries are deleted, and when the hash table itself is destroyed.