!UPSTREAM: mesa: Store gl_shader_stage enum in gl_shader objects.

This reduces confusion since gl_shader::Type is sometimes
GL_SHADER_PROGRAM_MESA but is more frequently
GL_SHADER_{VERTEX,GEOMETRY,FRAGMENT}.  It also has the advantage that
when switching on gl_shader::Stage, the compiler will alert if one of
the possible enum types is unhandled.  Finally, many functions in
src/glsl (especially those dealing with linking) already use
gl_shader_stage to represent pipeline stages; storing a
gl_shader_stage in the gl_shader object avoids the need for a
conversion.

TODO:
- Make a _mesa_shader_stage_to_suffix() function.
glsl: Change _mesa_glsl_parse_state ctor to use gl_shader_stage enum.
glsl: Make more use of gl_shader_stage enum in link_varyings.cpp.
glsl: Make more use of gl_shader_stage enum in lower_clip_distance.cpp.
glsl: Make more use of gl_shader_stage enum in ir_set_program_inouts.cpp.