freedreno/a6xx: Re-write program state building

Rob Clark requested to merge robclark/mesa:fd/fxn-of-doom into main

This restructures a large part of a6xx program state building to more closely match turnip.. it isn't exactly the same (due to shader variants and gl features that turnip doesn't have to support, and slightly different structure of state objects to split out some state that potentially changes at draw time, like interpolation), but it is at least closer.

Merge request reports