WIP: GLSL function composition

Basically adds two files: the new Function implementation and a file with examples and tests. High level users should mostly checkout the docstring of the Function class, and the examples in test_function.py.

Everything works (or should, I hope to add a test or two). I think the only remaining issue is that I am not sure yet how variables should work out. 

No need to wait for me to move this forward. If I don't like what you've done with it, I'll nag and we can re-discuss afterwards ;)

Although I understand the purpose for this, it is a bit unpythonic. Maybe better to just use subclasses:
```
class FragShaderTemplate(Function):
    code = """
    void main() {
        gl_FragColor = $color;
    }
    """ 
```
Then you can instantiate like usual:
```
my_frag_shader = FragShaderTemplate()
```
..and for single-use functions, you can still start from the base function class:
```
my_weird_func = Function(code)
```