RFC: Collections reform

This is a combined *conventions* and *library stabilization* RFC. The goal is to establish a set of naming and signature conventions for `std::collections`.

The major components of the RFC include:

* Removing most of the traits in `collections`.

* A general proposal for solving the "equiv" problem, as well as improving `MaybeOwned`.

* Patterns for overloading on by-need values and predicates.

* Initial, forwards-compatible steps toward `Iterable`.

* A coherent set of API conventions across the full variety of collections.

*A big thank-you to @Gankro, who helped collect API information and worked through an initial pass of some of the proposals here.*

[Rendered](https://github.com/aturon/rfcs/blob/collections-conventions/active/0000-collections-conventions.md)
I suppose this functionality could actually be provided generically on iterators that assert that their contents are sorted. Then we don't need to impl this stuff on each Set impl, we just make their iterators impl the (empty) SortedIterator trait. Then it's just `(a.iter() | b.iter()) & c.iter()`. Less slick, but much more composable and less of a double-dispatch hell, I think.