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.
Another problem is, that you assume that the compiler will give a ```glm::vec3``` the size of ```sizeof(float)*3``` and that the next ```float``` will be set immediately after the ```glm::vec3```.
This is true as long as the compiler uses no padding between the first ```glm::vec3``` and the ```float``` and no padding between the ```float``` and the next ```glm::vec3```.
This should be true for this case, I hope you know the rules why this is working, but I know that not everyone knows why this is working and this should be documented.

As well as cgcostume, I prefer to use the same declaration for structs in C++ and in GLSL to ensure conformity.
This is not always possible, because ```vec3``` in a struct will be padded to the size of a ```vec4``` in GLSL, that's why their use is discouraged.