Add clamping texture offsets to WebGL 2

This solves one instance of undefined behavior. There is a performance
cost, but it does not seem prohibitively large.
Allow GLSL 3.0 in WebGL 2

This was implied before, but needs to be explicitly specified. GLSL 3.0
restrictions concerning loops and array indexing are not in this commit,
I'm not aware if it has been decided whether they remain the same.
Merge pull request #672 from NVIDIA/webgl2-allow-glsl-3

Allow GLSL 3.0 in WebGL 2
Merge pull request #671 from NVIDIA/webgl2-texture-offset

Add clamping texture offsets to WebGL 2
Define texel fetch behavior in WebGL 2

Texel fetches in WebGL 2 should behave as in OpenGL when using
ARB_robust_buffer_access_behavior or KHR_robust_buffer_access_behavior.
Make sure buffer access is synchronized in WebGL 2

Performing reads and writes on a buffer that is currently bound for
transform feedback causes undefined results in GLES3.0 and OpenGL 4.5. In
practice results of reads and writes might be consistent as long as
transform feedback objects are not active, but neither GLES3.0 nor OpenGL
4.5 spec guarantees this - just being bound for transform feedback is
sufficient to cause undefined results.

Address this by adding an error for getBufferSubData when the buffer is
bound to a transform feedback binding point and any transform feedback
object is active. With this error in place, an underlying OpenGL-based
WebGL implementation can ensure correct behavior by unbinding the buffer
from transform feedback prior to mapping it for reading, and then binding
it again for transform feedback once being done with reading.

Also add an error for binding a buffer that is bound to a transform
feedback binding point to another binding point, so that other kinds of
buffer reads and writes with undefined results are not possible. We might
try to relax this rule later if it seems necessary, but it's simpler to
start with some behavior disallowed and later allowing it rather than the
other way around, which could cause backwards compatibility issues.

Also clarify that getBufferSubData returns data that is consistent with
the execution of all prior GL commands. This is technically covered by
GLES3.0 spec section 2.1, but this specific case is hard enough to
interpret that a clarification is warranted.
Merge pull request #673 from NVIDIA/webgl2-buffer-sync

Make sure buffer access is synchronized in WebGL 2
Merge pull request #674 from NVIDIA/texel-fetch

Define texel fetch behavior in WebGL 2