- it looks like glProgramUniform is not working correctly with Intel drivers, so better forget about it for setting the view and projection matrices. Even on NVidia the time difference can only be measured in microseconds per frame so it's not a big loss.
- better rebind the active shader after updating the matrices.
- added check for light uniform buffer overflows, because uniform buffers on Intel are rather small.