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.