Laziness in action!

Lazy chained methods:
step() - Consumes current method in chain
stepBackward() - Decrements then consumes method in chain
walk() - Invoke current method then increment chain
walkBackward() - Decrements then invokes current method 
resetChain() - Goes to beginning of chain
endChain() - Goes to end of chain
invokeAll() - Evaluates result of entire chain
invokeRest() - Evaluates result of remaining methods on chain relative to current position in chain
hasStep() - Checks if any methods can be consumed from current position in chain
countSteps() - Returns how many methods can be consumed from current position
hasStepBackward() -> Checks if any methods can be consumed by decrementing chain
countBackwardSteps() -> Returns how many methods can be consumed by decrementing chain
hasChain() - Checks if any methods are available to be evaluated.
countChain() - Returns how many methods are available to be evaluated


Lazy iterator:
Type: Dollar.Iterator
next() - Invokes action on next element in collection (current then increment)
previous() - Invoked action on previous element in collection (decrement then current)
cycle() - Invokes action while cycling through elements in collection 
cycleBackwards() - Invokes continuously while decrementing through collection
toFirstObject() - Moves position of iterator to first object
toLastObject() - Moves position of iterator to last object
endIterator() - Moves position of iterator to final position (next will return nil from there)
hasNext()
countNext()
hasPrevious()
countPrevious()

Made changes to reflect new syntax in Beta3 release
Made changes to flatten() and initial() as they didn't work as intended for me.
Why do we need to specify Any Type here? It should pick up type automatically. Let keep with the shorthand notation as this is typing a lot for invoking helper methods.