factored the program class out into its own file

Back over 100 lines of code again, and haven’t touched the shader
program class in a while, so factored it out too.