Implement a basic undo system making use of implicit sharing to avoid copies for stored attribute arrays. Functionally this has no benefit over memfile undo, but current undo system architecture requires each edit mode to implement an undo type. (Reviewed and co-authored by Hans Goudey) Pull Request: https://projects.blender.org/blender/blender/pulls/134623