Improve context version handling in test harness

Harness now shows clearly if the selected version of WebGL is not
supported, and test links point to the test with the right WebGL version
selected, so results are consistent whether you run the test with the
button or follow the link.
Merge pull request #667 from NVIDIA/improved-context-version-handling

Improve context version handling in test harness
Added more logging to loadImagesAsync to diagnose intermittent test failures on Chromium project's GPU bots.
Merge pull request #668 from kenrussell/more-logging

Added more logging to loadImagesAsync to diagnose intermittent test fail...
Add STENCIL_BITS and DEPTH_BITS tests to webgl-depth-texture.html

Ensure DEPTH_BITS returns >= 16 bits for UNSIGNED_SHORT and >= 24 bits for UNSIGNED_INT
If there is stencil, ensure STENCIL_BITS reports >= 8 for UNSIGNED_INT_24_8_WEBGL.
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
Change DEPTH_BITS for UNSIGNED_INT from 24 to 16.

The depth texture extension says the following with regard to UNSIGNED_INT depth textures.
"As per the OpenGL ES spec, there is no guarantee that the OpenGL ES implementation will use the to determine how to store the depth texture internally. It may choose to downsample the 32-bit depth values to 16-bit or even 24-bit."

For the sake of not imposing new requirements, we'll change the minimum depth for UNSIGNED_INT from 24 to 16.
Add DEPTH_BITS and STENCIL_BITS requirements to WEBGL_depth_texture extension

UNSIGNED_SHORT --> Depth: >= 16 Stencil: 0
UNSIGNED_INT --> Depth: >= 16 Stencil: 0
UNSIGNED_INT_24_8_WEBGL --> Depth: >= 24 Stencil: >= 8
Merge branch 'master' of https://github.com/RafaelCintron/WebGL into depthTexture
Address copying element array buffers in WebGL 2

Copying into element array buffers from buffers that contain other data
is disallowed in order to make sure index validation does not require
reading back buffer data from the GPU to the CPU. Copying element array
buffer data into other element array buffers can still be desirable, so
previous restrictions are relaxed so that element array buffers can be
bound to COPY_READ_BUFFER and COPY_WRITE_BUFFER.
Minor updates to WebGL 2 spec

Change the description to refer to GLES 3.0.3 spec instead of 3.0.2.

Add missing link target.

Add pixel buffer objects to WebGL 2.0 new feature list.
Make writing to gl_FragData[n != 0] fail compilation in WebGL 2

This should clear any ambiguity caused by some parts of the GLES 3.0
specification suggesting that writing to multiple outputs in GLSL ES 1.0
shaders would be possible, while section 4.2.1 says that calling
DrawBuffers only sets the output buffer for one output color for
GLSL ES 1.0 shaders.
Merge pull request #677 from NVIDIA/gl-fragdata-webgl2

Make writing to gl_FragData[n != 0] fail compilation in WebGL 2