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.
@huonw Oh dear, yes. I got really confused by the error message. Learning Rust every day!