[WIP] Reform comparison traits

It make checks up to this point, but I've only added a single run-pass test. Test suggestions are welcome!

Next, I'll replicate the `Equiv` [implementations](http://doc.rust-lang.org/std/cmp/trait.Equiv.html) with the new `PartialEq`, replace `equiv` method calls with the `==` operator sugar, and deprecate `Equiv`.

cc @alexcrichton @aturon @Gankro 
cc #19148
I tried that, it conflicts with this other impl:

``` rust
impl<Sized? A, Sized? B> PartialEq<&B> for &A { /* .. */ }
```

because `&str` implements `Deref<str>`. In other words, when `Lhs = Rhs = &str` and `A = B = str` then `&str` gets two implementations.