Undo/Redo

Undo/Redo implemented using the Command and Memento patterns