add `UndoManagerBase` and implement `_EditSessionProxy.undoManager` setter

TODO: doc, test, and example