Disallow invalid clears in WebGL 2

This improves cross-platform compatibility and testability of the API by
eliminating undefined behavior.

Another option would be to define the conversions performed when the
types mismatch, but this would increase WebGL/GLES3 incompatibility
compared to this option.
Merge pull request #636 from NVIDIA/webgl2-clear-spec

Disallow invalid clears in WebGL 2
Add minimal explanation for draw entry points

Includes error conditions for drawRangeElements, specifying it to behave
similarly to drawElements, and a note about vertex attrib divisor
affecting draw calls inherited from WebGL 1.0.

For Issue #544.
Test drawArrays and drawElements with non-zero divisor

ANGLE_instanced_arrays spec redefines drawArrays and drawElements in the
terms of drawArraysOneInstance and drawElementsOneInstance, so vertex
attrib divisors should affect them too. Test this.

Includes some minor code cleanup as well.
Merge pull request #637 from NVIDIA/webgl2-draw-stubs

Add minimal explanation for draw entry points
Merge pull request #638 from NVIDIA/one-instance-test

Test drawArrays and drawElements with non-zero divisor
Add test case to make sure shaders with uniforms of the same struct defination compile/link OK

Before we only test the failure cases, but never the success case.
Actually we almost check in a workaround to ANGLE that will break the success cases.
Generate an error in WebGL 2 if drawing with only instanced attribs

INVALID_OPERATION is generated if drawing with only instanced attribs or
if drawing without any attribs at all.

This makes creating a Direct3D-backed implementation less complicated,
since in Direct3D drawing always requires non-instanced vertex data.

The restrictions are a slightly tighter version of what is in the
ANGLE_instanced_arrays specification.
Added test for -1 index.

Some implementations may treat a -1 in the element array buffer
(65535 for 16-bit indices) as a primitive restart marker.
Instead for ES2 it should always be a valid regular index.
Merge pull request #642 from c0d1f1ed/negative-one-index

Added test for -1 index.
Merge pull request #640 from NVIDIA/all-attribs-instanced

Generate an error in WebGL 2 if drawing with only instanced attribs
Add test for drawing without any enabled attributes

This corner case is not very useful but still correct according to the
spec.
Add stress test version of point-no-attributes
Merge pull request #641 from NVIDIA/no-attribs-draw-test

Add tests for drawing without any enabled attributes
Fix typo and file list order.
Merge pull request #639 from zhenyao/struct

Add test case to make sure shaders with uniforms of the same struct defi...