Use the DoubleEndedIterator abstraction where possible and reasonable in the libstd and libextra. Particularly std::str has many iterators that can be made bidirectional, like `StrBytesIterator`, `StrCharIterator`, `StrCharSplitIterator`