Undo manager: Maintaining an undo stack for most of the entity/component/attribute operations and provides basic UI for the stack. UndoCommands contains a collection of those operations i.e. QUndoCommand-derived classes. Some of the code that was originally in various files is moved in UndoCommands classes. EntityIdChangeTracker helps tracking entity ID changes to provide reversibility of commands. Issue #243

Conflicts:
	src/Core/ECEditorModule/CMakeLists.txt
	src/Core/ECEditorModule/SceneStructureWindow.cpp
Fix build after merge
Fix mac build
Replaced 'if / else if' statements with 'switch / case' in ECEditorWindow::OnAboutToEditAttribute(..) for better performance
Merge remote-tracking branch 'rex/tundra2' into undo

Conflicts:
	src/Core/ECEditorModule/CMakeLists.txt
	src/Core/ECEditorModule/ECBrowser.h
Undo: Merge fix
Merge remote-tracking branch 'remotes/admino/undo' into incoming
Fix Linux build.