glsl: Disable structure splitting for shader ins/outs.

Previously, it didn't matter whether structure splitting tried to
split shader ins/outs, because structs were prohibited from being used
for shader ins/outs.  However, GLSL 3.00 ES supports varying structs.
In order for varying structs to work, we need to make sure that
structure splitting doesn't get applied to them, because if it does,
then the linker won't be able to match up varyings properly.
glsl: Generalize compute_packing_order for varying structs.

This patch paves the way for allowing varying structs by generalizing
varying_matches::compute_packing_order to handle any type of varying.
Previously, we packed in the order (vec4, vec2, float, vec3), with
matrices being packed according to the size of their columns.  Now, we
pack everything according to its number of components mod 4, in the
order (0, 2, 1, 3).

There is no behavioural change for vectors.  Matrices are now packed
slightly more sensibly (e.g. a mat2 is now packed with vec4's, which
guarantees that it will occupy a single varying slot, whereas it
previously was packed with vec2's, which meant that it might get split
across two adjacent slots).
Start updating lower_packed_varyings.  Need to merge with other stuff.
Got the initial varying struct test to pass
Disable transform feedback of varying structs
glsl: Allow varying structs in GLSL ES 3.00 and GLSL 1.50.