design the structure of  operation execution engine
add module Engine.OperationHistory
reconstruct module Engine
add Operation model
implement Engine.UpdateState.js
add Window.HisotryWin.js
Implement HistoryWin
fix bugs in Operation.js
implement OperationHistory as a singleton
add operation logging to Siderbar.Object3D
add signals to Engine.OperationHistory
implement undo/redo in Engine.js
bug fix: Engine.OperationHistory.js
bug fix: Sidebar.Ojbect3D.js
reimplementation of Engine.js (singleton)
reimplementation of HistoryWin.js (parasitic inheritance)
fix bug in making undo operation.
clone() is called for deep copying of some key value, like THREE.Euler
add support for operation type of CREATE and UPDATE_STRUCT
add support for update state operation of material
add mocha test to UI.Window getHeight/setHeight and getWidth/setWidth
reimplement Engine.js Operation.js
add undo/redo support for create operation
add undo/redo support for update_struct
implement Window.HistoryWin.js

Add function to act on events of operationUndone, operationRedone and operationReset.
add unit test for Engine.Operation.js
fix bug in Engine.OperationHistory.js

bugs in function __resetOperations:1. top should be set to -1; 2. count should be set to 0;
fix bugs in test_engine.js

the added objects should removed after the test.
add RefManager to manage references on geometry and material

add Set util, add test for RefManager
implement update_state for geometry

make a new geometry with the changed property to replace the original geometry of all the related objects.
add support in Operation.getUndo for any kind of key