Added update & render callbacks for windows

* This way windows can exist outside of game logic
* RenderContext and Viewport under heavy development
Made most window methods non-virtual

* It's no longer intended to overwrite them
* Some other minor modifications
Moved glfw error callback into WindowManager
Moved render code from Mesh into RenderContext