Changes for arbitrary customLights

Allows mappers to specify the ARB shader used by lights in the material def using program, vertexProgram, and/or fragmentProgram keywords along with the new customLight keyword