Add a ShaderProgram class

Encapsulates compiling, linking, and managing shader attributes; Also update graphics test program to use ShaderProgram
It will be good to modularize shaders also (along with there compiling). If we need to implement shaders as plugins to our system.. But not at all a urgent requirement, placing this comment for documentation purpose.