Ensure that side effects in iterators always run forward
Examples
Fail case:
let mut i = 0;
let x: = .map.rev.collect;
assert_eq!; // fail!
Rewrite to:
use ForwardIterExt as _;
let mut i = 0;
let x: = .map.forward.rev.collect;
assert_eq!; // success!