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

This is #15720, rebased and reopened.

cc @nikomatsakis
Not really. First, you can start moving out values from the front with `.move_iter()`. We don't know at which point `MoveEntries`, and consequently `RawTable`, has been dropped. Therefore we drop `n` values, starting at the other end.