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.
std: Re-optimize tls access on local allocation path

I did this once but acciddentally undid it in a later patch.
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.