close a vulnerability where HashMap::from_iter wasn't being randomized

While `HashMap::new` and `HashMap::with_capacity` were being initialized with a random `SipHasher`, it turns out that `HashMap::from_iter` was just using the default instance of `SipHasher`, which wasn't randomized. This closes that bug, and also inlines some important methods.
There's a nice doc-comment in `collections::hash` which sadly won't get included like this, perhaps it could be moved over to this module instead?