This allows more flexibility about how we store undo data. Potentially we wouldn't need to store everything segmented per-node if we didn't expose the `undo::Node` struct. Part of #118145. Pull Request: https://projects.blender.org/blender/blender/pulls/127116