added support for multiple shadow casting lights

* everything shadow related handled by helper classes
* cleaned up the shader code
* limit of 4 shadow casters right now