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 some more store intrinsics
nir: give array dereferences a constant index

This will help us generate less sucky code with things like matrices.
nir: add an is_packed flag

Ugly, but I can't think of anything better...
blerg
nir: add a pass to lower variables for scalar backends
nir: add more helper functions
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