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

This is #15720, rebased and reopened.

cc @nikomatsakis
It's a little more complicated, and `search_hashed_generic` probably wouldn't get inlined, so the performance would be screwed. See https://github.com/nikomatsakis/rust/commit/2fcb95b50e5a82c63b82241b98074869b50e1796#diff-4f6a90d697dafb6dac47e38d51dda84cR581