Starting redesign of shader compiling to address a few issues:
 - function code cache should not include variable declarations because they may need to be added/removed independently
 - compiling system is a bit tangled; need to make sure changes to namespace and output code are synchronized
   (this was leading to duplicate function definitions)
closer..
Redesign finished, starting testing..
All visuals working again
scenegraph examples are working again
fixed shader tests
Yet another overhaul of the shader compiling system.
Now much cleaner, fixed bugs related to naming conflicts and duplicate definitions.
compiler makes some effort to cache code when possible.

Merge branch 'shader_compile_redesign' into scenegraph