Cleanup Ext + Add utility iterators

Having the methods as default impls prevents repeating signatures, and future-proofs for the possibility of implementation specialization.

Also adds `range` et al as well as the `count` adaptor.
Oh sorry just to change this note to `FIXME: rust-lang/rust#10414` so we don't lose track of where it came from.