Optimized drawing

Since most of the scene is not animated, the multiplication of matrices
by the CPU during drawing is redundant - the transformations, and
multiplications, never change. The draw() function in Node was altered
to preserve the result of the first multiplication, and reuse that
instead of recomputing it. This lead to a significant increase in
framerate.
Modifications were also made to the shaders to allow for in-GPU
occlusion testing, but it proved too slow, so it is not used in the
program. Only draw-time occlusion testing is used in the Primitive
draw() function.