Add ``snapshots`` to the interface and the in-memory implementation.

Also add a generic interface test for the extremely boring case - which
happens to be the only case the other implementation handles.