Lazy evaluation of chained methods

step() - Invokes subsequent method in chain
invokeAll() - Evaluates entire chain at once and returns result

Made changes to reflect new syntax in Beta3 release
Made changes to flatten() and initial() as they didn't work as intended for me.