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

This is #15720, rebased and reopened.

cc @nikomatsakis
Okay so this checks if the hash here has been shifted less than we've walked. Which would imply that our hash isn't in the table, because it would have displaced this one? This should be commented for clarity.