Interleave vertex attributes into a single buffer for more efficient drawing

Interleaved buffer is kept on the GPU alongside the usual buffers to
maintain current API flexibility. Interleaving will be lost if
setPositions, setNormals etc. is called, based on the assumption that
repeatedly reconstructing the interleaved buffer would cost more
performance than would be gained by keeping it around.
Cache custom uniform's values to avoid setting them redundantly

Optimization is applied only to uniforms whose value is of type number in
JS. Extending this to vector and matrix uniforms would be possible, but
the returns are smaller.
Check that interleavedBuf exists before dirtying it
Clean up shader program management

Remove no-op unbind function.
Remove cached geometry boundary if vertex positions change
Fix - task tracking was wrongly aborted when task popups disabled
Merge pull request #307 from NVIDIA/cleanup

Cleanup
Merge branch 'V3.1' of https://github.com/xeolabs/scenejs into V3.1
Fix - getMatrix on "lookat" nodes
Fresh build featuring optimizations from NVIDIA
Merge pull request #306 from NVIDIA/vertex-data-packing-optimization

Vertex data packing optimization
Merge pull request #305 from NVIDIA/custom-uniform-optimization

Cache custom uniforms values to avoid setting them redundantly
Fresh build featuring array interleaving optimization from NVIDIA
Removed externals
New zip download