Add [mut_]shift_ref/[mut_]pop_ref functions, which return a pointer to the first/last item in the slice and modify the slice to exclude the returned item. Useful when writing iterators over mutable references.
Modify iterators to make them safe with the new rules.
Test that reborrowing contents of an `&'a mut &'b mut` pointer can only
be done for at most lifetime `'a`

Fixes #8624
auto merge of #10519 : nikomatsakis/rust/issue-8624-borrowck-overly-permissive, r=pnkfelix

See #8624 for details.

r? @pnkfelix
shootout-spectralnorm resurection with parallelization
auto merge of #10704 : TeXitoi/rust/spectralnorm-resurected, r=alexcrichton
Register new snapshots
auto merge of #10709 : alexcrichton/rust/snapshot, r=pcwalton
Fix initial debug statements printing twice

It may mislead you into thinking tasks are spawning twice, when in fact they are
not.
auto merge of #10715 : alexcrichton/rust/fix-log-twice, r=huonw

It may mislead you into thinking tasks are spawning twice, when in fact they are
not.
Box Block, fn_decl, variant and Ty in the AST, as they were inflating critical enum sizes.
Remove commented out naive implementation of ast::P<T>.