Remove std::cmp::cmp2.

It isn't used anywhere and `cmp2(a, b, c, d)` is identical to
`(a, b).cmp(&(c, d))`.
Tag derived impls with #[automatically_derived]

This will enable rustdoc to treat them specially.
auto merge of #12929 : sfackler/rust/automatically-derived, r=cmr

This will enable rustdoc to treat them specially.

I also got rid of `std::cmp::cmp2`, which is isomorphic to the `TotalOrd` impl for 2-tuples and never used.
De-@ Session usage.
De-@ ty::ctxt usage.
De-@ tyencode::ctxt and related parts of astencode.
De-@ liveness.
De-@ type checking contexts.
De-@ trans contexts.
De-@ reachable.
De-@ filesearch.
De-@ CStore uses.
De-@ ParseSess uses.
De-@ resolve_lifetime.
De-@ typeck::check::method.
De-@ gather_loans.
De-@ move maps and rework parts of trans.