Optimized HashMap. RawTable exposes a safe interface. (reopen)

This is #15720, rebased and reopened.

cc @nikomatsakis
You don't need to have a really big hashmap for this to be a problem, just not very big "holes" to fit them into. Although maybe my mental model of how memory is allocated is naive?