new3dapi: refactor lighting

Also some minor other changes.

Note that I made ShaderProgram#fetchUniformLocation public, required to access the ambient cubemap.

When constructing the DefaultShader you can provide the number of directional and point light (and spot light, which does nothing atm) which will be send to the shader. For all lights on top of that an ambient cubemap is used.