Undo/Redo—initial implementation

WYMeditor's undo is, in some cases, not accurate.
Yes. The benefit is that `outdent` and its friends have branching logic, multiple return points, etc.

Your question made me realize that currently, as it is, even if `outdent` didn't do any modification, a history point is registered. This means undoing nothing, successfully. Perhaps this should be really inside, in the return points where changes were made.