Add a ShaderProgram class

Encapsulates compiling, linking, and managing shader attributes; Also update graphics test program to use ShaderProgram
Makes sense, I'll add that in the next pass.