WIP: Ripping gloo in two via GLIR

This PR refactors gloo to break it in two pieces, one is the high level gloo interface, which generates GLIR commands. The other is the GLIR interpreter.

In the progress I will also fix some outstanding issues with gloo, as described in #465, like getting rid of local strorage and allow specifying uniforms/attributes before the source code is set.

Look closely at the order of the ':' and the `2` in both expressions. At first I used `cmd, id, *args = command`, thinking I *finally* had a use-case for that syntax, but it does not work on Python 2 :P