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

This is #15720, rebased and reopened.

cc @nikomatsakis
I'd like this comment to explain more clearly that RevMoveBuckets leaves the table in an inconsistent state and should *only* be used during drop. just a sentence (or phrase) would be enough.