[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
Make sense; presumably `&string == "Hello"` would work as well. The basic problem is that the blanket impl for adding  a layer of `&` has to add it to both sides, or else it runs afoul of coherence.

Anyway, I think this is fine for now, and the main thing is for the equality impls to be symmetric.