Made the shader program system more flexible

This is in preperation for the usage of compute shaders in terrain
generation.