Add UndoManager and make undo/redo shortcuts
* Control-z is undo, and control-shift-z is redo.
* Only track events that are added can be undone and redone.
Add review fixes
* Change _undoManager to __undoManager.
* Remove the canUndo() and canRedo() calls in the keydown callback
since it is already done internally in the _undoManager.
* Clear the _redoStack when a new command is registered.
Add makeCommand factory function
Move commands to src/core/commands.js
Add tests for the UndoManager
Add command for changing media url
Add undo/redo for adding/removing tracks
Add undo/redo for removing track events
Also fixed a bug. When redoing the addTrackEventCommand, it now adds
the previously deleted track event instead of creating a new one.