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.
I feel like this needs to be more than a `debug_assert!`: any user of `HashMap` can trigger this by causing an overflow (`debug_assert!` is mainly designed for internal consistency checks), similarly the `new_size` addition could overflow and so needs to be checked.