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

This is #15720, rebased and reopened.

cc @nikomatsakis
Does this need to be a `for`? We're guaranteed that there is an empty space at the, because we just made it. Seems this could be a `loop` (which is presumably more efficient).