Generalize plan snapshot

Im not 100% happy with `SnapshotPlannerSpec` so any suggestions to make it better would be much appreciated.
Plan code should be self contained, we can't really be calling back into other things. If there is an interim step it is ok, but it shouldn't call into FeatureStoreTextStorage either, so I don't thing #149 is enough.