syntax: improve the spans of some #[deriving] traits.

This makes error messages about (e.g.) `#[deriving(Clone)] struct Foo {
x: Type }` point at `x: Type` rather than `Clone` in the header (while
still referring to the `#[deriving(Clone)]` in the expansion info).
Add autogenerated tests for the spans of various derived traits.
As Either no longer exists, remove Either, Left, and Right from syntax files
auto merge of #11822 : bytbox/rust/master, r=huonw

Changes only to src/etc.
auto merge of #11834 : huonw/rust/deriving-spans, r=alexcrichton

I'd forgotten to update them when I changed this a while ago; it now displays error messages linked to the struct/variant field, rather than the `#[deriving(Trait)]` line, for all traits.

This also adds a very large number of autogenerated tests. I can easily remove/tone down that commit if necessary.
syntax: make deriving have slightly less cryptic error messages.

This unfortunately changes an error like

    error: mismatched types: expected `&&NotClone` but found `&NotClone`

into

    error: type `NotClone` does not implement any method in scope named `clone`