freedreno, turnip: Support private memory and use nir_lower_vars_to_scratch
"private memory" is Qualcomm's name for what most other drivers call scratch memory. It's usually used for large temporary variables and spilling, although this MR only implements the first part. However it should be enough to fix some fails with subgroup tests that use huge temporary arrays.
This is based off of !7385 (merged).