Undo/Redo

Covers:
* https://github.com/KSHSK/WAVED/issues/44 - Implement "Undo" and "Redo" buttons
* https://github.com/KSHSK/WAVED/issues/149 - Event - selected actions save after cancel (needed to fix it while working on this)
* https://github.com/KSHSK/WAVED/issues/169 - Deleted item's unique name still in use (now it works properly with delete and undo/redo)

There's a ton of code changes, including two new helper (singleton) classes. It will require significant code and functionality review.

We want to make sure every action adds a single undo/redo to the history and undo/redo properly changes the values. The only instance where undo doesn't actually revert the action is with file upload, which does undo by marking the file for deletion.

While working on this I noticed a need for z-index for widgets - https://github.com/KSHSK/WAVED/issues/171

Code Overview:
* History is maintained in the `ProjectViewModel`, but can be appended by other classes through the `HistoryMonitor`. Every entry of the history array contains an Object. Each of those objects contains an undo function and a redo function, except that position 0 contains only redo, and position history.length - 1 contains on undo.
* The instance of `PropertyChangeSubscriber` is used to subscribe individual properties for SCVM, DataSet, Action, Event, and GA. Before, only the function `setDirty` was subscribed. But this new class subscribes on change to set dirty and add to redo history, and subscribes on before change to set undo history.
* `HistoryMonitor` is a singleton class that lets any class add to the undo/redo history, but doesn't give access to actually call undo/redo (that is still restricted to ProjectVM). It also has a function that disables history adding, executes the given function, and enables history adding. This is used for when undo is called (so a duplicate change isn't added) and for batch changes (like Action editing) so that individual changes aren't added as well.
* As it stands, Action and Event changes are always batch changes made through the `HistoryMonitor` and never add individual changes to the history.