Add some framework in preparation for undo/redo in the scene editor.
Change the way scene nodes are stored in the scene editor and add some ground work for undo/redo.
Improve the serialized data of EditorMetadataComponent.
Improve the serialized format of the scene editor metadata.
Add initial support for undo/redo.

This is a temporary solution until a better system is put in place. Basically, what is happening here is the state of the entire scene is being saved for every undo/redo point. Clearly, this is way too inefficient to keep over the long term, especially with larger levels. A better system will be looked into later on.