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
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`
std: more dummy type parameters on iterators to work around #6967.
std: remove vec::each2 and vec::each2_mut in favour of iterators
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.
std: remove each[i]_mut functions, in favour of iterators.
Merge branch 'each-fn-kill' of https://github.com/huonw/rust into each-fn-kill
iterator: work around method resolve bug (#5898)
auto merge of #6999 : thestinger/rust/each-fn-kill, r=thestinger
Add test for #6155
rustc::typeck: fix array out of bounds

Fixes #6155
pass correct flags to jemalloc for cross-compiling
Mention `for` in the section on loops

The "4.3 Loops" section only describes `while` and `loop`. We then see `for`
used in a code sample at the end of the "13. Vectors and strings" section,
but it's explained for the first time only in the next section --
"14. Closures".

It is worth mentioning it in "4.3 Loops".
std: Change str::from_bytes to raise a condition on invalid input

As per #4765
auto merge of #7001 : alco/rust/tutorial-for-loop, r=bstrie

The "4.3 Loops" section only describes `while` and `loop`. We then see `for`
used in a code sample at the end of the "13. Vectors and strings" section,
but it's explained for the first time only in the next section --
"14. Closures".

It is worth mentioning it in "4.3 Loops".

---

Feel free to reword it and commit yourself if you don't like my wording.
A reminder that a block is a single expr in closures

This is something that's only been briefly mentioned in the beginning of
the tutorial and all of the closure examples within this subsection
include only one expression between { and }.