Remove implicit shrinking from hash_map.

Part of enforcing capacity-related conventions, for #18424, the collections reform.

Implements `fn shrink_to_fit` for HashMap.
The `reserve` method now takes as an argument the *extra* space to reserve.
Interesting, I didn't think about the relationship of allocated and usable space here. I would maybe add a note that this isn't necessarily all usable, and that the collection will likely grow before this many elements are inserted. If we can specify the exact relationship too, that would be a bonus. Although the new RingBuf rewrite specifically returns the *usable* capacity here (one less than the actual allocated space).