Isolate common wait_end logic
Mass rename of .consume{,_iter}() to .move_iter()

cc #7887
Clean up some unused imports in tests
std: merge iterator::DoubleEndedIterator and DoubleEndedIteratorUtil
std: merge Iterator and IteratorUtil
std: Rename Iterator.transform -> .map

cc #5898
std: Iterator.take_ -> .take
std: Iterator.flat_map_ -> .flat_map
std: Iterator.chain_ -> .chain
std: Iterator.last_ -> .last
std: Iterator.len_ -> .len
std: Transform.find_ -> .find
std: fix the non-stage0 str::raw::slice_bytes which broke in a merge
syntax and rustc: fix some warnings
auto merge of #8327 : sstewartgallus/rust/factor_out_waitqueue, r=bblum

I'm a bit disappointed that I couldn't figure out how to factor out more of the code implementing `extra::sync` but I feel this is an okay start. Also I added some documentation explaining that `WaitQueue` isn't thread safe, and needs an exclusive lock.
 
@bblum
Merge remote-tracking branch 'remotes/origin/master' into cleanup-iterators
auto merge of #8430 : erickt/rust/cleanup-iterators, r=erickt

This PR does a bunch of cleaning up of various APIs. The major one is that it merges `Iterator` and `IteratorUtil`, and renames functions like `transform` into `map`. I also merged `DoubleEndedIterator` and `DoubleEndedIteratorUtil`, as well as I renamed various .consume* functions to .move_iter(). This helps to implement part of #7887.
Merge branch 'master' into default_args

keeping experimental branch in sync