Fixed 'sceneDirty' flag after SceneJS.Node#addNode
Cache shader program uniform state to avoid redundant uniform1i calls

uniform1i calls are one of the worst performance bottlenecks of the
engine when running on devices with a lower-powered CPU but a relatively
high-performance GPU. Don't set the uniforms redundantly to gain up to
10% extra performance.

The optimization is targeted especially for the usage pattern seen on for
example biodigitalhuman.com, where there can be lots of draw calls with
exactly the same parameters in succession.
Cache material uniform state to avoid redundant uniform* calls

Continuation of the previous patch to reduce CPU overhead from setting
uniforms further.
Merge pull request #304 from NVIDIA/uniform1i-optimization

Uniform1i optimization
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
Merge branch 'V3.1' of https://github.com/xeolabs/scenejs into luke

Conflicts:
	api/3.1/scenejs.js
	api/latest/scenejs.zip