Added IGameObject and StartGameObject. Changed engine to call UpdateRoot and InitRoot so that abstract derived types could add their own code before and after the non-abstract types method call.