[Design exploration, do not review the code]
This feature lets the user store multiple versions of the mesh and go back to them using a brush or a mesh filter. Snapshots are not linked to the mesh topology, so it works after remeshing.
It also allows to use another mesh as a snapshot, so you can sculpt one object into another
I included the Snapshot Write brush in the patch to be able to test it. You just need to use the "Create Mesh Datablock Snapshot" operator in the brush popover and then use the brush to get the volume back from the mesh copy. It can also be easily implemented as a mesh filter.
We need to decide the scope of the feature as the use case is similar to how some users use the sculpting layers. A lot of features based on this can be implemented (better snapshot management, a brush that reads mesh data and puts it into the snapshot to merge shapes, get the snapshot back from undo, mix different snapshots in the mesh filter...).
In my opinion, I would prefer using multires layers as the main "storage" system of sculpt mode and leave this for quick shape exploration.
We also need to decide how this will work with multires (or if it we want to implement it in multires if we are going to have layers). With the remeshers works fine, but with static topology it can create a lot of artifacts that can't be fixed.