Glsl static names

Addresses some issues with the `Compiler` class:

* Avoids posible name conflicts during mangling:
      - reserved names
      - statically-declared variable names
      - function arguments
* Do not create mangled names > 32 chars
* Adds an optional faster (but uglier) compiling method
* Add `MainFunction(Function)` class that allows multiple function definitions in a single string

Ready for review. The motivation for these changes is to support the gl-agg line visual in #370.

Fixes #360 
Fixes #359
It's actually not that slow (using the faster method is not noticeably different), but as we optimize other parts of the scenegraph (in progress!) it may become a significant part of the bottleneck.

This is roughly the sixth incarnation of this code that I wrote since your last PR, and so far the only one that has worked correctly and not exploded into madness. Perhaps it can be rewritten more efficiently, but there are many corner cases to worry about and not enough unit tests exposing them, so for now I recommend we stick with it and think about optimization later.