Guide: iterators

An introduction to iterators. I kinda like this, but I kinda don't. Hmmm.
`fold` has even less claim to the title of "iterator" than `map`, since it actually just consumes an `Iterator` into some arbitrary value, not into an `Iterator`.

That is there's two broad classes of methods on `Iterator`:

- adaptors, `map`, `filter`, `scan`, `chain`, `take`, `skip` etc; these take `self`, are lazy (i.e. very little computation happens until used with a consumer) and returning a type that implements `Iterator`.
- consumers, `next`, `find`, `fold`, `collect`, `nth` (and `for` loops); these take `&mut self` and eat some number of elements from the iterator, doing computation as they go. These are not lazy, i.e. they are how iterators actually do any meaningful work.