i965/gs: Add GS_OPCODE_SET_WRITE_OFFSET.

This opcode will be used by geometry shaders to store the appropriate
write offset in the message header when performing URB writes of
output vertex data.
i965/gs: Add GS_OPCODE_SET_VERTEX_COUNT.

This opcode will be used by geometry shaders to store the final vertex
counts in the message header when preparing the message that ends the
geometry shader thread.
i965/gs: Add GS_OPCODE_SET_R0_2.

This opcode will be used by the geometry shader to initialize DWORD 2
of R0, which needs to be 0 in order for scratch reads and writes to
operate correctly.
!UPSTREAM: i965/gs: add GS visitors.
i965: Make prim_to_hw_prim accessible outside brw_draw.c.

We will need access to this array in order to configure the geometry
shader.
i965/vec4: Make a function for setting up vec4 program key clip info.

This functionality will need to be reused by geometry shaders.
!UPSTREAM: i965/gs: make the state atom for compiling Gen7 geometry shaders.

TODO: maybe disentangle
!UPSTREAM: i965/gs: Generalize some error messages for GS.

TODO: find more places to generalize.
TODO: Don't use "VS/GS" terminology.  Use "vec4" terminology, since that will endure longer.
i965/gs(gen7): Allocate URB space for use by geometry shader.
!UPSTREAM: i965/gs(gen7): Allocate push constant space.
i965/vs: generalize push const upload in preparation for GS.
i965/gs: set up GS state.
!UPSTREAM: i965/gs: Support UBOs by generating surface state and binding tables.

All but two of the piglit GLSL 1.50/uniform_buffer tests work, and
maxuniformblocksize and referenced-by-shader work.

TODO:
- maybe squash with prev stuff
!UPSTREAM ===== END of preliminary back-end work =====
!UPSTREAM: Fix GS sampling.

TODO:

- Seems like these functions ought to be rewritten to loop over
  program types.

- Handling of null gs seems clumsy.

- Can the same sampler be used in multiple shader stages (e.g. both VS
  and FS)?  If not, then it seems like we're going to run out of
  samplers in our bitfield.  If so, then is it guaranteed that
  fs->SamplerUnits[s] == gs->SamplerUnits[s]?  If so this needs an
  explanatory comment.  If not, this code seems broken.

- Decide what to do about code duplication.  Either I should de-dup
  the code or I suppose I should only update the gen7 code.

- Move to appropriate place in the series.
!UPSTREAM: Primitive ID part 1.
!UPSTREAM: Primitive ID part 2.
!UPSTREAM: Primitive ID part 3.
!UPSTREAM: Primitive ID part 4.
i965/gs: Fixup gl_PointSize on entry to geometry shaders.

gl_PointSize is stored in the w component of VARYING_SLOT_PSIZ, but
the geometry shader infrastructure assumes that it should look for all
geometry shader inputs of type float in the x component.  So when
compiling a geomtery shader that uses a gl_PointSize input, fix it up
during the shader prolog by moving the x component to the w component.

This is similar to how we emit fixups and workarounds for vertex
shader attributes.