Squash all the things

Just opening this up for final review (sorry I couldn't re-use the other one - blame Github).

This basically the same as before, with:

1. Just using the size of the snapshot input to calculate the number of reducers. I might leave an inline comment about this.
2. Merged the two `SnapshotWindows.startingDate()` functions - I see no value in the "max" version.
I don't think I understand this, seeing sentinels like minValue makes me a little un-easy, how does this flow through everything else?