Three fixes

I made 3 changes that I'd like to get some comments on:

1. Allowed returned structs to contain structs (recursively)
2. Prevent using any built-in names in GLES2 as they're not present in GLES2 GLSL.
3. A bit of reorganization to GlslSymbol and StructMember to allow suppressing multiply used semantics being emitted (only the largest is used).

Many thanks,

Ray Donnelly.