Collection Views

Add additional iterator-like View objects to collections.

Views provide a composable mechanism for in-place observation and mutation of a single element in the collection, without having to "re-find" the element multiple times. This deprecates several "internal mutation" methods like hashmap's `find_or_insert_with`.

[Rendered View](https://github.com/Gankro/rfcs/blob/master/active/0000-collection-views.md)
I'm convinced it's because the borrow of `view` currently doesn't end even with `get_mut` returning `None`. Using an empty/full enum would make matching possible.