Add mediump and lowp precision emulation support for GLSL output

This implements the rounding as specified in WEBGL_debug_shader_precision
extension proposal for desktop GLSL and ESSL output. The bulk of the new
functionality is added in the form of a new EmulatePrecision AST
traverser, which inserts calls to the rounding routines angle_frm and
angle_frl in the appropriate places, and writes the rounding routines
themselves to the shader.

Compound assignments which are subject to emulation are transformed from
"x op= y" to "angle_compound_op_frm(x, y)", a call to a function which
does the appropriate rounding and places the result of the operation to
x.

The angle_ prefixed names should not clash with user-defined names if
name hashing is on. If name hashing is not on, the precision emulation
can only be used if the angle_ prefix is reserved for use by ANGLE.

To support the rounding routines in output, a new operator type is added
for internal helper function calls, which are not subject to name
hashing.

In ESSL output, all variables are forced to highp when precision
emulation is on to ensure consistency with how precision emulation
performs on desktop.

Comprehensive tests for the added code generation are included.

BUG=angle:787

Change-Id: I0d0ad9327888f803a32e79b64b08763c654c913b
Reviewed-on: https://chromium-review.googlesource.com/229631
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Remove the libGLESv2_static target.

BUG=angle:733

Change-Id: Ia33a67d8422c6c31a1f07f2a8778537e023b2dd2
Reviewed-on: https://chromium-review.googlesource.com/230781
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
Fix error in dumping direct struct indexes.

The parser would become confused over the purported array size
of struct indexes. In reality they were always a single direct
index into a struct, but it would take the object size of the
represented type (EG, a vec4 would have size 4) and deference
out-of-bounds memory.

BUG=434033

Change-Id: I92349aa04e6faadc766cb28c04e28d5f19c4e1ec
Reviewed-on: https://chromium-review.googlesource.com/230530
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Nicolas Capens <capn@chromium.org>