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.
i965/gs: Create structs for use by GS program compilation.
!UPSTREAM: Primitive ID part 1
!UPSTREAM: i965/gs: add GS visitors
!UPSTREAM: Primitive ID part 2
i965: Make some files safe to include from C
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.
!UPSTREAM: i965/gs: make the state atom for compiling Gen7 geometry shaders.

TODO: maybe disentangle
!UPSTREAM: Primitive ID part 3
!UPSTREAM: i965: Fix some vec4 gs key setup

TODO:
- Test thoroughly
- Squash
!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: Primitive ID part 4
!UPSTREAM: i965/vp: Keep track of the location of the first PROGRAM_STATE_VAR.

Previously, when compiling ARB vertex shader programs (and fixed
function vertex programs), we assumed that the first PROGRAM_STATE_VAR
was associated with the first element of the brw_vec4_prog_data::param
array.  However, in the patch that follows, we will need to allocate
space for clip plane uniforms before PROGRAM_STATE_VAR uniforms, so
that will no longer be true.

To prevent regressions, this patch records the location of the first
PROGRAM_STATE_VAR uniform, and uses that as an offset when processing
any ARB vertex program instruction that refers to a state var.

TODO: probably unnecessary for GLSL 1.50 style geometry shaders
!UPSTREAM: i965/gs: Assign clip plane uniform registers before emitting code.

The uniform registers for clip planes need to be assigned before we
try to emit the dot products that convert gl_ClipVertex into
gl_ClipDistance.

In vertex shaders the dot products are emitted by the call
emit_thread_end(), so it is safe to wait until just before that call
to set up the uniform registers for clip planes.  But in geometry
shaders, the dot products are emitted as we're traversing the IR
(since they happen during the shader's call to EmitVertex()).  So we
need to make sure the uniform registers are set up before then.

TODO: probably unnecessary for GLSL 1.50 style geometry shaders
!UPSTREAM: i965: turn on GS

TODO:
- Commit message
i965/gen7: Allow URB_WRITE channel masks to be used.

Previously, brw_urb_WRITE() would unconditionally override the channel
masks in the URB_WRITE message to 0xff (indicating that all channels
should be written to the URB).

For geometry shaders, we need the ability to set the channel masks
programatically, so create a flag to prevent brw_urb_WRITE() from
overriding them.