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

This is #15720, rebased and reopened.

cc @nikomatsakis
Even better, if `EmptyBucket` is defined just as a wrapper around `Bucket`, it definitely will become a noop.