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
I think it is--see the GLSL code in the agg-line PR. To break that up would require several different functions attached together, and we would have to independently set `$transform` on multiple functions. Keeping this all together in the same place is much more natural and simple.