ScanIterator, and to_vec/foldl iterator consumers

@thestinger r?

The 2 `_unlimited` functions are marked `unsafe` since they may not terminate.

Also, the `state` field of the `Unfoldr` and `Scan` iterators is public, since being able to access the final state after the iteration has finished seems reasonable/possibly useful.

Lastly, I converted the tests to use `.to_vec`, which halves the amount of code for them, but it means that a `.transform(|x| *x)` call is required on each iterator.