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.
Why cannot this be implemented as a default value for the return annotation? Otherwise you have to go through parsing again and have to deal with making sure all the bindings and locations end up right.