Split HashTable out into mutable and immutable kinds.

There are some inference problems making the marketplace tests fail. I'll need same help fixing that up.
By this do you mean that you chose this implementation over (-poly (a b c d) ((-HT a b) c d . -> . (-IHT (U a c) (U b d)))), or something else?