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.
I prefer `RangeStep { .. }` with spaces, do you have a strong preference to this?