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 few more passes
nir: use sets instead of hash tables where we can
nir: add a block indexing dirty flag
nir: calculate dominance information
nir: dump the dominance frontiers
nir: add a field for the total number of basic blocks
exec_list: add a list_foreach_typed_reverse() macro
nir: add a foreach_instr_reverse() macro
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