shader_runner: Support setting of patch parameters.

Support setting GL_PATCH_VERTICES, GL_PATCH_DEFAULT_OUTER_LEVEL and
GL_PATCH_DEFAULT_INNER_LEVEL.
arb_tessellation_shader: Test GL limits and default state.

Use glGet*v() to test GL limits and default state introduced by
arb_tessellation_shader.
arb_tessellation_shader: Test evaluation layout getters.

Use glGetProgramiv() to test tessellation evaluation shader input layouts.
Both explicitly specified layouts as well as default layouts are tested.
arb_tessellation_shader: Test control layout getters.

Use glGetProgramiv() to test tessellation control shader output layouts.
arb_tessellation_shader: Test glsl preprocessor defines.
arb_tessellation_shader: Compile test for simple shaders.
arb_tessellation_shader: Negative test without required layout qualifiers.

Tessellation control shaders require the vertices output layout qualifier.
Tessellation evaluation shaders require the primitive mode input layout
qualifier. Test that linnking fails without them.
arb_tessellation_shader: Add sanity shader_runner test.

Add test that should tessellate two 3-vertex-patches into one triangle each
to fill the screen.

The test should effectively bahave as if the vertex data was used to draw
GL_TRIANGLES without the tessellation stage.
arb_tessellation_shader: Negative test mismatching shader and primitive type.

From the ARB_tessellation_shader spec (Errors section):

   "The error INVALID_OPERATION is generated by Begin (or vertex array
    commands that implicitly call Begin) if the active program contains a
    tessellation control or evaluation shader and the primitive mode is not
    PATCHES.

    The error INVALID_OPERATION is generated by Begin (or vertex array
    commands that implicitly call Begin) if the primitive mode is PATCHES if
    either:

      *  the active program contains no tessellation evaluation shader, or
      *  no program is active."
arb_tessellation_shader: Negative test get program parameters.

From the ARB_tessellation_shader spec (Errors section):

   "The error INVALID_OPERATION is generated by GetProgramiv if <pname>
   identifies a tessellation control or evaluation shader-specific property
   and <program> has not been linked successfully, or does not contain
   objects to form a shader whose type corresponds to <pname>."

This test only test to get parameters from programs that lack the required
shader type. Unlinked programs are not tested.
arb_tessellation_shader: Negative test valid range of PATCH_VERTICES.

From the ARB_tessellation_shader spec (Errors section):

     "The error INVALID_VALUE is generated by PatchParameteri if <pname> is
     PATCH_VERTICES and <value> is less than or equal to zero or is greater
     than the implementation-dependent maximum patch size."
arb_tessellation_shader: Negative test output-layout size mismatch.

From the ARB_tessellation_shader spec (Section 4.3.8.2):

  "It is a compile-time error if the output patch vertex count specified in
  an output layout qualifier does not match the array size specified in any
  output variable declaration in the same shader."
arb_tessellation_shader: Test large uniforms arrays.

Test uniform arrays of maximal size as well as arrays of uniform blocks.

Also test the for required linking errors if too large uniform arrays are
requested.
arb_tessellation_shader: Test global layout qualifiers.

Test declaring layout qualifiers in multiple shader objects and check for
linking arrays if qualifiers mismatch.
arb_tessellation_shader: Negative test shader input size.

Test that non-array inputs to tessellation control and evaluation shaders
fail to link.

Also test that inputs with wrong array size fail to link.
arb_tessellation_shader: Negative test linking without vertex shader.

From the ARB_tessellation_shader spec (Section 2.14.2):

   Linking will fail if the program object contains objects to form a
   tessellation control shader (see section 2.X.1), and

     * the program contains no objects to form a vertex shader;

From the ARB_tessellation_shader spec (Section 2.14.2):

   Linking will fail if the program object contains objects to form a
   tessellation evaluation shader (see section 2.X.3), and

     * the program contains no objects to form a vertex shader;
gen_builtin_uniform_tests.py: Add tessellation control shader tests.
gen_builtin_uniform_tests.py: Add tessellation evaluation shader tests.
gen_constant_array_size_tests.py: Add tessellatino shader tests.

Test both tessellation control and tessellation evaluation shaders.

Note that this patch also adds all required extensions as explicit
requirements in the glslparsertest header; even the one in which spec
subdirectory the test resides.

XXX: Is this really neccessary? It seems highly unlikely that the compiler
ould fail to do proper constant expression in a tessellation shader stage
when the same expression worked fine in the vertex shader.
!UPSTREAM   demo tessellation shader