auto merge of #8090 : blake2-ppc/rust/iterator-adaptor-names, r=pcwalton

Drop the "Iterator" suffix for the the structs in std::iterator.
Filter, Zip, Chain etc. are shorter type names for when iterator
pipelines need their types written out in full in return value types, so
it's easier to read and write. the iterator module already forms enough
namespace.
iterator: implement DoubleEndedIterator for FlatMap
iterator: implement size_hint() for FlatMap
std: Implement RandomAccessIterator for iterator adaptors

Implement RAI where possible for iterator adaptors such as Map,
Enumerate, Skip, Take, Zip, Cycle (all of the requiring that the adapted
iterator also implements RAI).
std: Tests for RandomAccessIterators
std: Remove RandomAccessIterator impl for VecMutIterator

The RandomAccessIterator implementation is not sound for the mutable vec
iterator, and makes it easy to duplicate &mut element pointers.
extra: Implement DoubleEnded and RandomAccess iterators for bitv
extra: Implement RandomAccessIterator for RingBuf