Add an Iterate iterator

The new iterator takes a function and produces an infinite stream
of results of repeated applications of the function, starting from
the provided seed value.
> and noticed I couldn't use Option::mutate as it takes a bare function, which maybe it shouldn't

It takes a closure AFAICT: [`Option.mutate`](http://doc.rust-lang.org/master/std/option/type.Option.html#method.mutate)?