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

This is #15720, rebased and reopened.

cc @nikomatsakis
Yes, it's used more like a C++ iterator, where iterators are basically enhanced pointers. I guess `Bucket` could benefit from an impl of `Iterator<()>`, now that `for` loops are desugared (is it still buggy with LLVM 3.4 provided by the system?)