AttachedShaders implementation

This contains a more scalable (in shadertypes) but less efficient (in openGL calls) implementation of `attachShader`. It's type signature is `Shader s => StateVar [s]` and can thus be used for any shadertype.

I suspect/hope that the efficiency issue is not really big problem because of two reasons. Firstly I think most shaders are created and then never edited so there is no need to querry OpenGL (which is the most expensive part of `attechedShaders`). Secondly when real performance is needed the user can use `attachShader` and `detachShader`, do some bookkeeping themselves or use the lower, less typesafe, stuff to implement something more specific and efficient.