Generalize plan snapshot

Im not 100% happy with `SnapshotPlannerSpec` so any suggestions to make it better would be much appreciated.
I think there is a fromDisjunctionString that does the leftMap bit for you.