Undo/Redo—initial implementation

WYMeditor's undo is, in some cases, not accurate.
Because... It is very simple and I'm not sure how much work it will take to deal with these asynchronous dialog windows in our testing framework.