javadoc and adding more supported 'slice' definition methods to the new deriveBucket bucket builder
Implemented a few more types of Bucket slicing, and added initial unit test.
I'm having second thoughts about whether Bucket.event() should exist.
I introduced it because I was manually calling 'calculate' from the Cell that tracked incoming join data into a bucket, but this is plainly wrong. The event graph should have been doing that.
Then I moved to a specific API call to indicate that all 'join' events for an atomic event had been added.
Under current implementation, there is no hard guarantee that this would be ordered before, or after a call to 'calculate' if Bucket implemented types.MFunc

So with more thinking, I'm moving back to the idea that all Bucket implementations are types.MFunc, and we use calculate to indicate event boundary. This makes joins much more consistent with other data that a bucket may subscribe to directly.
Ok, Bucket is back to a MFunc, and now the event counts are looking sensible in unit test.

todo: make the test have some assertions
test the different forms of slice (with causal events, and independent)
then extend the new approach out to window buckets
then test bucketing on functions that listen to unknown event sources (both with a declared Join, and without)
fixes to slice behaviour, ready to add assertions to unit test
Stricter tests on Mekon Function bucketing.
Reduce slice_pre fully fixed and tested
tests and fixes to fold bucket slice_pre
an awful lot easier to get the tests working and reason about code once I'd realised that slice-before and slice-after are significantly different enough to justify different classes.
yes, I do need to consolidate some of that duplicated code.
first cut of windowed buckets
docs and test for window bucketing
Merge remote-tracking branch 'origin/master'

Conflicts:
	test/programs/RealTradeTests.scala