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.
I don't think I understand the issue. 

I would expect `cover-union` to return a bunch of types that cover different parts of the union. Why are hashtables not implemented as part of that?