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.
This may not be failure-safe because any failure will attempt to drop the zeroed `next_arg` field. Why not store `Option<A>`?