exec_list: add a list_foreach_typed_reverse() macro
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 constructors for a few more instruction types
nir: handle infinite loops a little better in the CFG

Most passes will want to assume that the CFG is connected, i.e. it is
possible to reach every point in the program. Infinite loops (i.e. loops
without a break statement in them) will break this assumption,
so insert a fake control flow edge in infinite loops to make them happy.
This is fine as it's undefined what happens when you have an infinite
loop anyways. This fixes assert failures in the dominance calculation
in some of the glsl parser tests that have shaders with infinite loops
(but never run those shaders).
nir: add a pass to convert to SSA
XXX more test stuff
nir: add type information to nir_op_info

Also, fix up some copypasta errors.
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