nir, st/mesa, radeonsi: add semantics into IO intrinsics, lower IO for amd & remove in/out variables from NIR
This adds IO semantic information into lowered IO NIR intrinsics, so that NIR in/out variables are not needed and can be removed and drivers don't have to parse those variables in complicated ways. (IO = shader inputs and outputs)
nir_shader_gather_info is changed to gather all info about IO from IO intrinsics.
st/mesa and NIR passes get support for lowered IO intrinsics only to the extent needed by radeonsi.
radeonsi lowers IO intrinsics (i.e. derefs) and removes all in/out/uniform variables (excluding samplers and images), because they are not needed. (radeonsi lowers IO in the finalize_nir callback before shader variants in st/mesa, so that the lowered NIR is cached by st/mesa)