Increasing Robustness of ShaderProgram class.

Added more checks, memory cleanup.  Also included some classes to
load/unload the shader.