Upgrade 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
I suggest transforming all of the fallout you think would be worthwhile into:

`.entry(...).get().or_else(|e| ...)`