Remove rtdebug_! and make rtdebug! work properly.

It now actually does logging, and is compiled out when `--cfg rtdebug` is not
given to the libstd build, which it isn't by default. This makes the rt
benchmarks 18-50% faster.
Allow disabling optimizations in tests only
Cleanup librustpkg a little bit.

Mostly I did simple transformations from imperative style loops to
more functional iterator based transformations.
Don't use unkillable in UnsafeArc dtor when there's no unwrapper. Close #8382.
Reorganise Select traits to not expose internal runtime types. Close #5160. Pending #8215.
Make cell with_ref/with_mut_ref use finally. Close #7975.
Fix select() in light of the deschedule...and then race. Close #8347.
Clean up transitionary glue in task/spawn.rs. Don't hold kill-little-lock for O(n) time, cf #3100, and optimize out several unneeded clone()s.
register snapshots
fix build with the new snapshot compiler
auto merge of #8419 : cmr/rust/fix-rtdebug, r=brson

It now actually does logging, and is compiled out when `--cfg rtdebug` is not
given to the libstd build, which it isn't by default. This makes the rt
benchmarks 18-50% faster.
auto merge of #8450 : alexcrichton/rust/nopt-changes, r=graydon

Since the new runtime landed, the *-nopt builders have increased cycle time by roughly an hour. I have a feeling that this is because the entire runtime is in rust and it's not being optimized at all. In that past with an optimized C++ runtime it looks like things ran faster.

This adds the ability to disable optimizations in tests only, not for the entire compiler. This means that the entire compiler and associated libraries will be built with optimizations, but the tests themselves would be built and run without optimizations.

This isn't quite as good of a guarantee as disabling optimizations everywhere, but hopefully it'll improve cycle time for the *-nopt builds to move the queue along faster.
auto merge of #8476 : thestinger/rust/snapshot, r=brson
std: Re-optimize tls access on local allocation path

I did this once but acciddentally undid it in a later patch.
Forbid pub/priv where it has no effect

Closes #5495
auto merge of #8487 : brson/rust/local-opts, r=brson

I did this once but acciddentally undid it in a later patch.
auto merge of #7866 : sstewartgallus/rust/clean, r=cmr

Mostly I did simple transformations from imperative style loops to
more functional iterator based transformations.
auto merge of #8411 : bblum/rust/assorted-fixes, r=brson

Each commit is pretty much what it says on the tin. r anybody.
auto merge of #8423 : alexcrichton/rust/less-priv-again, r=bstrie

Closes #5495
rebase