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)
Is there a reason this can't be written to use `if let` or `match`?