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
This could be a reason why its so slow. Would it not be easier to collect all objects with the same name and then simply iterating over them to assign index?