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.
Allocator shenanigans again make this troublesome. Vec tests the following:

```
    /// let mut vec: Vec<int> = Vec::with_capacity(10);
    /// vec.push_all([1, 2, 3]);
    /// assert_eq!(vec.capacity(), 10);
    /// vec.shrink_to_fit();
    /// assert!(vec.capacity() >= 3);
```