Sorry please ignore this for now. I've realised there is a bug here
where we could end up packing components in only one of the shaders but
not the other. For example if we have an array on one side but just a
bunch of individual varyings on the other (which is legal I believe).
I'll send a
There are three reasons for the rewrite.
1. Adding support for packing tess patch varyings in a sane way.
2. Making use of qsort allowing the code to be much easier to
follow.
3. Allowing us to add a crude live range analysis for deciding
which components should be packed together. This