An iterable object or function.
Array - return one element per cycle
Object{next:Function} - call next() for the next value (this also handles generator functions)
Function - call to return the next value
Returns the fully realized values of the iterators.
The return value will be an array unless lazy.first() was used.
The realized values are cached for subsequent calls.
A lazy collection iterator yields a single value at a time upon request.