Ported from the Iterator goodie by Mario Wolczko.
Occasionally you may have a block that when evaluated can be treated as a collection -- ie it takes another block as parameter, then applies that to a sequence of values.
This goodie wraps the block into an object -- an iterator -- which is part of the collection hierarchy, and therefore inherits a variety of useful collection-related methods.