Implement the UNDO framework described in https://github.com/openedx/modular-learning/issues/134
Implement the UNDO framework described in #134