Added shader stage enumeration

There are many states to a shader program.  Each shader has a specific
stage.  In typical OpenGL fashion, each stage is represented by an int.
This enumeration wraps each of those integers in a type safe
representation.