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 buy that argument. This file is for require/typed it has nothing to do with contract generation. Maybe we need the require but why should it be here, I was able to trigger the problem no use of require/typed.