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.
Right! I changed it to use Option (and noticed I couldn't use `Option::mutate` as it takes a bare function, which maybe it shouldn't?).