Snapshots

One test failed but it's unrelated to these changes, so I think it was being flaky.
This should probably become internal but the thought occurred to me that in-memory snapshotting could be a potential perf optimization.

Thoughts?