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 mean, I get the advantage of being able to define extra functions with the main function, but the same can be achieved by making multiple Function objects. Is this worth an extra class?