Expose GLSL attribute and uniform types.

This expands what ShaderProgram offers, and enables run-time type
safety.