!UPSTREAM: i965/vec4: Allow for dispatch_grf_start_reg to vary.

Both 3DSTATE_VS and 3DSTATE_GS have a dispatch_grf_start_reg control,
which determines the register where the hardware delivers data sourced
from the URB (push constants followed by per-vertex input data).

For vertex shaders, we always set dispatch_grf_start_reg to 1, since
R1 is always the first register available for push constants in vertex
shaders.

For geometry shaders, we'll need the flexibility to set
dispatch_grf_start_reg to different values depending on the behvaiour
of the geometry shader; if it accesses gl_PrimitiveIDIn, we'll need to
set it to 2 to allow the primitive ID to be delivered to the thread in
R1.

This patch eliminates the assumption that dispatch_grf_start_reg is
always 1.  In vec4_visitor, we record the regnum that was passed to
vec4_visitor::setup_uniforms() in prog_data for later use.  In
vec4_generator, we consult this value when converting an abstract
UNIFORM register to a concrete hardware register.  And in the code
that emits 3DSTATE_VS, we set dispatch_grf_start_reg based on the
value recorded in prog_data.

This will allow us to set dispatch_grf_start_reg to the appropriate
value when compiling geometry shaders.  Vertex shaders will continue
to always use a dispatch_grf_start_reg of 1.

TODO:
- Move into the proper part of the series.
!UPSTREAM: Virtualize setup_payload instead of setup_attributes
Add brw->geometry_program
WIP: i965: Add an opcode for doing a URB write with an offset from a register (needed for GS).
Add GS_OPCODE_THREAD_END

TODO:
- Verify that I'm returning the correct value from implied_mrf_writes() for this new opcode.
Add GS_OPCODE_SET_WRITE_OFFSET
Add GS_OPCODE_SET_VERTEX_COUNT
!UPSTREAM: WIP: add GS visitors
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.
i965/gs(gen7.5): Set max_gs_threads correctly
WIP: make the state atom for compiling Gen7 geometry shaders.  TODO: maybe disentangle
fixup! WIP: make the state atom for compiling Gen7 geometry shaders.  TODO: maybe disentangle
fixup! !UPSTREAM: WIP: add GS visitors
fixup! WIP: make the state atom for compiling Gen7 geometry shaders.  TODO: maybe disentangle
!UPSTREAM: i965: Fix some vec4 gs key setup

TODO:
- Test thoroughly
- Squash
!UPSTREAM: 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