Add mt_hash tests and fix mt_hash_remove bug

mt_hash_remove was improperly NULLifying the buckets in the hash table.
This was caused interesting behavior with regards to mt_hash_clear and
mt_hash_insert behaving irregularly.