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

This is #15720, rebased and reopened.

cc @nikomatsakis
This works when `idx + 1` is a multiple of `capacity`, but at all other times, `(self.idx + 1) & (self.table.capacity() - 1)` is not equal to `self.idx`. (the "it's zero at all other times" part is important)