Repair various cases where values of distinct types were being operated
upon (e.g., `&int` added to `int`).
Add impls of the comparison operators for fixed-length arrays of lengths 0...32 and repair various cases where slices and fixed-length arrays were being compared.
Implement new operator dispatch semantics.

Key points are:
1. `a + b` maps directly to `Add<A,B>`, where `A` and `B` are the types of `a` and `b`.
2. Indexing and slicing autoderefs consistently.
Update the guide examples and try not to leave user hanging as to what
this `&x` sigil is all about.
Remove incorrect doc annotation, mark experimental since we haven't discussed in an API meeting
Better debug printouts
syntax: Use operator sugar in `#[deriving(PartialEq)]`
core: Fix fallout of changing `#[deriving(PartialEq)]` expansion
getopts: Fix fallout of changing `#[deriving(PartialEq)]` expansion
core: DSTify PartialEq, PartialOrd, Eq, Ord
collections: Fix fallout of DSTifying PartialEq, PartialOrd, Eq, Ord
rustrt: Fix fallout of DSTifying PartialEq, PartialOrd, Eq, Ord
graphviz: Fix fallout of DSTifying PartialEq, PartialOrd, Eq, Ord
regex: Fix fallout of DSTifying PartialEq, PartialOrd, Eq, Ord
test: Fix fallout of DSTifying PartialEq, PartialOrd, Eq, Ord
syntax: Fix fallout of DSTifying PartialEq, PartialOrd, Eq, Ord
rustc: Fix fallout of DSTifying PartialEq, PartialOrd, Eq, Ord
alloc: DSTify Box<T> impl of PartialEq, PartialOrd, Eq, Ord
Add test for deriving PartialEq, PartialOrd, Eq, Ord on Box<[T]>
Add test for the first half of issue #15689

cc #15689