shader_runner: Refactor string-to-enum lookups.

We now do all lookups associated with string_to_enum using
lookup_enum_string().

Note: this function is a little more robust than the old string
lookups--previously, we would erroneously match an initial substring
(e.g. if the table contained "GL_DEPTH_COMPONENT", it would
erroneously match "GL_DEPTH_COMPONENT16").  We used to deal with that
in an ad-hoc kludgy way (by sometimes putting trailing spaces in the
string table).  Putting proper whitespace handling in
lookup_enum_string() seems a lot safer.
shader_runner: Add the ability to set hints.
Test unsized arrays in interface blocks

These tests verify that unsized arrays appearing inside interface
blocks obey the same rules as unsized arrays appearing outside
interface blocks.  Namely, their size is inferred from the largest
constant integer index used to access them across all compilation
units for the same shader stage, and this inferred size is used to
validate that interface blocks are properly matched between one shader
stage and the next.
Test accuracy of dFdx and dFdy functions.

Mesa/i965 currently (as of commit 1cc3b90) has an inaccurate
implementation of dFdy() which produces the same results for every
pixel in an aligned 2x2 block.  This piglit test exposes the
inaccuracy.

v2: Use an error threshold of 1.0e-3 for both tests.  Set hint
GL_FRAGMENT_SHADER_DERIVATIVE_HINT to GL_NICEST, since some
implementations may use a less accurate derivative formula by default
in order to speed up textureGrad operations.
!UPSTREAM: Interface block redeclaration tests

TODO:
- Add more tests

- Split into a patch for the GLSL 4.10 redeclaration rules and a patch
  for other GLSL 1.50 issues (e.g. disallowing a variable inside an
  unnamed interface block to match the name of a previously declared
  global)

- Validate using NVIDIA proprietary driver