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
Done. I also switched to using `__repr__` for all shader classes.