interesting extension that allows me to invisibly use a no-arg reduction as before:
reduce(new Sum[Double])
but also allows a Reduction with a constructor of the Key type in a MultiStream
reduce(new KeyedSum[Double](_))

I had thought I'd be using this to build reductions that did some further logic based on the keyed stream they are representing (e.g. at the very simplest, it means that my elements collecting results for a Plot would know their stream key (and therefore be able to populate the dataset name in charts).

I'd also thought that I could have a rich reduce that subscribed to more events from Mekon core, but I've just realised that of course those events wouldn't actually fire down to a reduce listener without work, and it seems a bit inconsistent.

Ahhh! What about if I introduce a trait that a mekon.Function could implement to indicate that it supports 'reset'. That way I could build a general "please give me a vector of stream generators, that I can slice on my own schedule". e.g. imagine a Product feed data summariser, that could be reset daily for daily data, or reset 10 minutes for curve building?
some composite key tests coming up