deletion of dead code.
Beginning cleanups and testing before I let some other people have a play
Everyone loves unit tests.
cleaned up all the unused bucketBuilder macro code
unit tests on windowed reductions
Experiments with further abstraction of Term type to allow for different implementations of Expression capture and handling (e.g. transportable expressions, or expressions where I can analyse the AST before compiling to an alternate output
unit tests a-go-go
More tests on MultiStreams
More consistency on fold and reduce
Fixes to reduce_all.
Have introduced the concept of 'terminationEvent' which is allowed to propagate events through the graph.
This is much better than the old 'lifecycle' approach, and as a result, enables code like:
stream.reduce_all(new Reduce).map( someFinalReduceProjection )

even
stream.reduce_all(new Reduce).reduce_all( new FinalReduce )
should work (though would be rather pointless).

Also had to add more mature handling of graph changes to my quick-n-dirty graph implementation. We now support fireAfterChangingListeners and distinct phases of graph change / event propagation.