syntax: move functions from deriving/mod to deriving/generic.

These are now only called in generic and can be private. This
includes manually inlining/merging some that are called once.
syntax: move expand_generic_deriving to be a method on TraitDef
rustc::metadata::decoder: cleanup and slightly speed up each_path
auto merge of #6946 : Blei/rust/fix-each-path, r=Aatch
syntax: rewrite deriving(Ord) to not require Eq.

lt and gt are implement directly in terms of the corresponding
method on their elements, and le and ge are the negations of these.
syntax: correct the modifications to deriving(Ord) so that it works.
auto merge of #6988 : huonw/rust/deriving-changes, r=bstrie

Several minor changes:
 - The clean-up I mentioned in #6851 (moving functions from deriving/mod.rs to deriving/generic.rs)
 - Move `expand_generic_deriving` to a method
 - Reimplement `deriving(Ord)` with no dependence on `Eq`
rustc: Convert a fail! to a useful error message.
auto merge of #6990 : huonw/rust/const-eval, r=bstrie

This fail! caused ICEs, but was trivial to convert to a useful error message.