gallivm: Modernize soa nir->llvm translation
This MR tries to clean up nir-llvm translation. The main goals are handling "proper" (ssa) nir and improving maintainability and compile times. The major changes are:
- Remove most of
lp_bld_nir.c
and duplicate the used code into the soa and aos backends. - Emit more optimal LLVM ir. (No 32-bit bools, gather/scatter intrinsics, robustness)
- Accept and use more modern nir: soa translation will now use divergence information and handle phi instructions instead of registers.
The main benefit for now are lowering compile times and moving most of Vulkan descriptor lowering to a nir pass in lavapipe. Doing this is not viable without divergence information since performance is to bad with the vector path.