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
Oh right. Is it okay for `Entry` to be `Entry<'a, Q:'a, K:'a, V:'a>`? The `Entry` has references to the underlying table (which contains `K`s, not `Q`s). It might be possible to make it work with just `Q`, but I think it would mean pushing all the `ToOwned` stuff into all parts of hashtables and hashmaps.