Generalize plan snapshot

Im not 100% happy with `SnapshotPlannerSpec` so any suggestions to make it better would be much appreciated.
I think these rules would be greatly enhanced by a diagram and/or some terser notation to demonstrate the scenario. The english is informative but really hard to parse so much at once, I kind of have to sketch out the repository state on a piece of paper to keep track of it. 

But, having said that, the general approach of expressing the planning scenarios is really nice. And will help document / communicate it.