gs: Test that geometry shader inputs must be arrays.

v2: Additional tests.
gs: Test that geometry shader input declaration rules don't apply to outputs.
shader_runner: Add the ability to enable GL_PROGRAM_POINT_SIZE.
shader_runner: Remove useless "TODO" comment.

I introduced this comment back in commit f9d224d0 (Add vbo support to
shader_runner), and I don't remember what I meant by it.
shader_runner: Allow "draw arrays" if no [vertex data] section.

For some geometry shader tests, there's no need for any vertex shader
inputs at all--the geometry shader produces all the data itself.  To
allow tests like these, we need to be able to issue a "draw arrays"
command with any number of input vertices, even if there is no [vertex
data] section.

This patch disables shader_runner's "draw arrays" overflow checks in
the event that there is no [vertex data] section, so that the "draw
arrays" command can be used.  This is safe, since the lack of a
[vertex data] section means that no vertex attrib arrays are enabled,
so the shader won't try to access the vertex input data at all.
gs: Test gl_PointSize output.
gs: Test gl_ClipDistance output.
gs: Test gl_PrimitiveID output.
gs: Test EndPrimitive() functionality.
gs: Test primitive ID input.
Add PIGLIT_FORCE_WINDOW environment variable.

Setting PIGLIT_FORCE_WINDOW=1 causes all piglit windowsystem tests
(those that weren't invoked with the "-fbo" flag) to show the window
prior to calling piglit_display().  Setting PIGLIT_FORCE_WINDOW=0 (the
default) preserves piglit's existing behaviour, which is to only show
the window when the test is run in "manual" mode (with no "-auto"
argument supplied).

Setting PIGLIT_FORCE_WINDOW=1 slows down the piglit run, and produces
more annoying windows on the screen, but it has been observed to
produce more repeatable results when testing with the nVidia
proprietary driver for Linux.
Add PIGLIT_STRIP_ARG() macro for extracting args during piglit config.

v2: Fix update of *argc.
Use PIGLIT_STRIP_ARG() in formats.c
Support both core and compat contexts in xfb/overflow-edge-cases.c.

This will allow the test to be adapted for geometry shaders.

v2: Use VAO's if GL version >= 3.0.
gs: Adapt xfb/overflow-edge-cases.c for geometry shaders.

The transform feedback test "overflow-edge-cases" can now be invoked
with a "use_gs" argument, that causes it to use a geometry shader.
Support both core and compat contexts in xfb/intervening-read.c.

This will allow the test to be adapted for geometry shaders.

v2: Use VAO's if GL version >= 3.0.
gs: Adapt xfb/intervening-read.c for geometry shaders.

The transform feedback test "intervening-read" can now be invoked with
a "use_gs" argument, that causes it to use a geometry shader.

v2: In the geometry shader, make positions array const, and fix outer
loop bound.
gs: Make texelFetch and textureSize tests use GLSL 1.50 for geometry shaders.

Previously, these tests used ARB_geometry_shader4.  However, the
initial implementation of geometry shaders in Mesa isn't going to
support ARB_geometry_shader4.  So test this functionality using GLSL
1.50 geometry shaders instead.

v2: Use a generic vertex attribute instead of gl_PositionIn.
Basic test that transform feedback works with geometry shaders.
gs: Test rules related to geometry shader input sizes.

Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec
contains some tricky rules for how the sizes of geometry shader input
arrays are related to the input layout specification.  In essence,
those rules boil down to the following:

- If an input array declaration does not specify a size, and it
  follows an input layout declaration, it is sized according to the
  input layout.

- If an input layout declaration follows an input array declaration
  that didn't specify a size, the input array declaration is given a
  size at the time the input layout declaration appears.

- All input layout declarations and input array sizes must ultimately
  match.  Inconsistencies are reported as soon as they are detected,
  at compile time if the inconsistency is within one compilation unit,
  otherwise at link time.

- At least one compilation unit must contain an input layout
  declaration.

This patch includes tests for verifying all of these behaviours,
modelled as closely as possible from the text and examples in the GLSL
1.50 spec.  Both interface block style and and non-interface block
style declarations are tested.

v2: Test layout vs explicit size more thoroughly: don't just test the
case where one compilation unit specifies a layout with N vertices and
another compilation unit specifies an input with size >N.  Also test
the case where the second compilation unit specifies an input with
size <N.