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.
What machinery is in place for a return value to immediately refine the type environment without an if test? I'd use it if it existed. Otherwise I'm not going to try to implement it.