Let there be light

And there was light!
For now there is no scene graph or property implementation, all lights are added in painter.cpp, check that out to see how you can add lights.
Typically there are three phases.
1. Setup of OpenGL objects
2. Update of OpenGL objects due to invalid states (due to updates on CPU side)
3. Usage of OpenGL objects during rendering

As it is now, you cover all three phases during initialization.
You can extract some of those functions into the rendering phase and you should create an update phase for the other unsuitable lines of code.
The second pass needs to be executed when GPU buffers are invalid, e.g. if the lights have changed.