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.
This is largely a copy-paste job from the rust-lang, this file has some legacy style. Can clean up.