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.
Oh, that 16 byte alignment was from a time where we were just starting out and were not sure if we were getting the right data inside the UBOs, so just for safety reasons I added the alignment requirement because updating D3D11 constant buffers requires the data to be 16-byte aligned. That restriction doesn't apply to GL so will remove this.