Support snapshot windows

Part 5...

This is where things start to get more interesting. ~~I'm not at all convinced that the all-important logic in `SnapshotPartition` is correct and will need some serious scrutiny and tests.~~
It might be tempting to add a more generic `case class DateRange(start: DateMatch, end: DateMatch)` where `DateMatch` could specify inclusive/exclusive. Not sure how much milage we would get out of it elsewhere.