Never use built-in attribute names on OpenGL ES

They are not allowed in the specification:

From GLSL_ES_Specification_1.0.17.pdf:

"7.3 Vertex Shader Built-In Attributes

There are no built-in attribute names in OpenGL ES."

Instead of using built-in "gl_MultiTexCoord0" for
"appdata_t.texcoord : TEXCOORD0" we will output an
attribute "xlat_attrib_TEXCOORD0".

This feature can be selected for other targets using the
new option ETranslateOpAvoidBuiltinAttribNames. To avoid
passing options everywhere, m_Options is now a member of
hlslLinker.

This will cause vertex shaders that use the same semantic
more than once to create two attribute variables with the
same name which will fail to compile. Subsequent commits
in this branch address that.
Move getElements into glslCommon.cpp/h

I will use this later when suppressing duplicate
semantics (it will suppress all but the one with
the largest number of elements).
Suppress attributes with duplicate semantics

.. otherwise you can end up with multiple attribute
variables with the same name. I determine the usage
of the semantic with the greatest number of elements
and suppress all the others.

A common base class for GlslSymbol and StructMember
(GlslSymbolOrStructMemberBase) was added to enable
this.

New test-case (in-struct-dupe-sem-ret-struct-in.txt)
was added for this feature.

Updated -outES.txt/-outES3.txt test-cases with these
now non-duplicated attributes.
Add option to propagate original attrib names

.. called ETranslateOpPropogateOriginalAttribNames.

Instead of outputting an attribute called
"xlat_attrib_TEXCOORD0" for
"appdata_t.texcoord : TEXCOORD0" we will output an
attribute called "appdata_t_texcoord". This allows
the programmer on the GL side of things to look up
attribute names that bear a close resemblence with
the source code.
Tidy up variable name output

.. there were cases where 0 was being appended
to things that were not arrays. Don't do this.
Fix breakage f87a0b caused with gl_Normal

.. "Never use built-in attribute names on OpenGL ES"
had a bad interaction with the special-case code of:
"
if (sem == EAttrSemNormal && size == 4)
	pad = 1;
"
.. so I improved this such that it now specifically
targets the usage of "gl_Normal".

The testcase that failed was z-ogre-grass2-outES.txt
Linux build fixes
Merge pull request #35 from mingwandroid/propagate-hlsl-variable-names

Always emit attributes instead of built-ins for GLES.
Add options to emit attributes instead of built-ins for GL.