Added the actual undo and redo functions

Updated the SetUndo decorator to be more universally usable by only
optionally clearing the redo stack.

Created the SetRedo decorator to add a state to the redo stack