call _super() on init to be compatible with ember-data objects
addBeforeObserver won't call the observer with a diff unless it's deferred
whitespace removal
register all properties if _trackProperties has not been set
rename History to UndoHistory, since History is part of unrelated native browser APIs
optional built-in keyboard shortcuts
add support for grouping of states, over a defined interval
isActive() should take into account if we're in the process of undoing and redoing
consolidate UndoHistory.pushState() to _afterChange
instead of storing before/after values, store undo/redo functions
fire undo/redo events when keyboard shortcuts are bound
initialize history after super(), so that the object has time to get set up
add support for observing arrays and rolling them back on undo