Add in initial implementation of snapshots
Add support for subsetting snapshots
Add optional limiting for snapshotting
Merge branch 'snapshotting' into develop