collections: optimize `HashMap` for size. Add `ResizePolicy` trait

An interface that gives a better control of the load factor and the minimum
capacity for HashMap.
The size of HashMap<K, V> is now 64 bytes by default on a 64-bit platform
(or 40 bytes, that is 3 words less, with FNV and without minimum capacity)
Added a documentation in a few places to explain the behavior.