Add a baseobject which provide a unique ID for each instance.
Register and unregister a callback need to be fixed.
Simplify the code in class Window and CallbackObject:
   use a map in Window to record GLFWwindow -> Window objects