Got rid of the m_is_valid member variable.

This member variable is not really needed. The only thing that
determines the validity of the shader at this point is if m_progam is >
0. As it's an unsigned number and glCreateProgram() will return 0 if it
could not create a new program object. Also m_program is properly
updated everywhere else to maintain this condition.