Assorted iterator fixes in libstd

Fix #8228 by replacing .iter() and .iter_err() in Result by external iterators.

Remove std::uint::iterate since it's replaced by `range`.

Implement random access for `iterator::Invert` and `vec::ChunkIter` (and bidirectionality).