Add a ShaderProgram class

Encapsulates compiling, linking, and managing shader attributes; Also update graphics test program to use ShaderProgram