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

This is #15720, rebased and reopened.

cc @nikomatsakis
This... seems like a crazy way to do this, but I guess it would be faster? Might want to put a note that you're swapping the actual address of the pointer, and not the contents pointed to by the pointer. For a second I thought you were actually shifting the previous bucket into this one.