Allow returned struct to contain structs (recurring)
Emit attributes and varyings always for GLES2
Reorganization and suppression of multiply used semantics

GlslSymbol and StructMember now share a base class (the badly but
descriptively named GlslSymbolOrStructMemberBase) which I felt was
the only sane thing to do to allow me to abstract some commonality
between them to facilitate the next part.

If the same semantic is used multiple times (e.g. TEXCOORD0) then
the smaller versions are suppressed in favour of the largest one,
so a vec4 trumps a vec2 and a vec3.