thin: fix typos in variable names
thin: use multimap for shader sources
shader: use multimap for sources
thin: move out leftover extension::setup
thin/program/use: implement it
shader: implement begin and end to use the shader
thin: improve error reporting for shader compilation