Utility library to add undo/redo behavior to JS objects