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

This is #15720, rebased and reopened.

cc @nikomatsakis
`<<3` is `*8`, but your comments above suggests this should be `*4`, which is intended?