Shader uniforms

Adds functionality for setting shader uniforms by name and fixes some previous flaws in ShaderProgram; Further possible work:
 - Add convenience methods for setting uniforms from GLM vector and matrix types (possible now, but slightly verbose)
 - Store uniform values in ShaderProgram and make glUniform calls only when value is changed (an optimization that seems premature at this point)
 - Uniform arrays? (They seem to be very rarely used)
This is where the dynamic JS methods are nice, with just one ```uniform``` method with variable types:
https://github.com/tangram-map/tangram/blob/master/src/gl/gl_program.js#L282

That then get dispatched to the appropriate GL uniform setter variant:
https://github.com/tangram-map/tangram/blob/master/src/gl/gl_program.js#L309