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.
Check that interleavedBuf exists before dirtying it
Merge pull request #306 from NVIDIA/vertex-data-packing-optimization

Vertex data packing optimization