customLight keyword

I have made some changes to allow materials to use the existing "program" keywords to specify GLSL used for the light interaction of the light they define. This would allow such changes as using a cubemap to define the projection behavior, special effect interactions, etc. The material would use standard light material syntax but would add the new customLight global keyword and existing program \ fragmentProgram \ vertexProgram keywords which previously couldn't be used in light definitions.

This work mirrors my changes to vanilla Doom 3:

https://github.com/nbohr1more/Doom3_divide