[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
Why `&str`?