Upgrade HashMap to new entry API in RFC 509 (https://github.com/rust-lang/rust/issues/19986)

TODOs/things that make me frowny face:

  - Entry is still <'a, K, V> instead of <'a, O, V>
  - I'm not happy about the fact that this clones the key even when it's already owned.
  - With small keys (e.g. ints), taking a reference seems wasteful.
  - The other maps are still outstanding.

r? @Gankro
cc: @cgaebel
You should be moving the `k` value into the Entry; that way it only needs to be to_owned if they decide to actually `insert`.