nir: initial import

XXX split me up
nir: add a glsl-to-nir pass
nir: hack in a post-link conversion

For making sure things don't crash.
nir: add a pass to lower variables for scalar backends
nir: add a pass to remove unused variables
nir: add a pass to lower sampler instructions
nir: add a pass to lower system value reads
nir: add an optimization to turn global registers into local registers
nir: calculate dominance information
nir: add a pass to convert to SSA
nir: add a nir_alu_instr_channel_used() helper function
nir: add an SSA-based copy propagation pass
nir: glsl-to-nir bugfixes
nir: fix iterating over sources
nir: lower_variables_scalar fixes
add umod opcode
more validation
nir: add an SSA-based dead code elimination pass
add more passes to brw_shader.cpp
glsl/linker: pass through the is_intrinsic flag

This flag was set to true for the atomic counter intrinsics, but it
never got plumbed through the linker, so by the time it got to the
backends it would always be set to the false. The current i965 backend
code doesn't use is_intrinsic, so this should not change any existing
code, but it's useful for codepaths that want to distinguish between
intrinsics and non-intrinsics without using strcmp.