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.
`#[deriving(Copy)]`?