RFC: cmp and ops reform

This RFC proposes a number of design improvements to the `cmp` and
`ops` modules in preparation for 1.0. The impetus for these
improvements, besides the need for stabilization, is that we've added
several important language features (like multidispatch) that greatly
impact the design. Highlights:

* Make basic unary and binary operators work by value and use associated types.
* Generalize comparison operators to work across different types; drop `Equiv`.
* Refactor slice notation in favor of *range notation* so that special
  traits are no longer needed.
* Add `IndexSet` to better support maps.
* Clarify ownership semantics throughout.

[Rendered](https://github.com/aturon/rfcs/blob/cmp-ops-reform/text/0000-cmp-ops-reform.md)
On Mon, Nov 10, 2014 at 08:08:34PM -0800, P1start wrote:
> The syntax for ranges in patterns was changed to `...` (with three
> dots, unlike the two dots used for ranges) recently, so it wouldn’t
> be ambiguous to the parser. An extra dot doing such a significant
> change would be quite confusing, though.

Note that, as far as the parser is concerned, there is no problem at
all: pattern and expression syntax are distinct. There is perhaps some
concern for human readers, where they might expect to *destructure* a
pattern rather than to *apply* the pattern. I personally think this is
not really a problem though.