Refresh light uniforms only when needed

After this change, if 'clean' property is added to an uniform and
evaluates to true, the uniform is not uploaded to the GPU. This is used
to avoid needlessly refreshing lights uniforms when the material changes
but the program does not, saving CPU usage.
Improve code style in light uniform optimization
Only put those uniforms to uniformsList which are in the program

Also cache uniform locations in the uniformsList, so that querying them
from the program is not needed. This reduces CPU usage.
Replace uniform.skipUpdate with uniform.needsUpdate

This is consistent with usage of needsUpdate throughout the rest of the
code. The property is not added to all uniforms for now, so the check
needs to be needsUpdate === false rather than just ! needsUpdate.
PnlTri.js Rev. 1.4; smaller & faster
Merge pull request #5036 from NVIDIA/optimize-uniforms-list

Only put those uniforms to uniformsList which are in the program
Merge pull request #5034 from NVIDIA/optimize-uniform-updates-2

Refresh light uniforms only when needed
Merge pull request #5038 from jahting/pnltrixmpl

Triangulation example webgl_geometry_text2 with PnlTri.js Rev. 1.4: smaller & faster
Updated builds.