Add .dispose() method

Previously, the vertex and fragment shader IDs were hidden by gl-shader-core. They’re now exposed on the shader instance so that they can be deleted and/or modified later.

The .dispose() method will delete the shaders and program on that instance.

Adding because I needed to quickly replace shaders while live-editing them – though I think it's more efficient to recompile them, and might send through another PR soon with that functionality if you're open to it :)