use GL_TEXTURE_2D_ARRAY for most of our textures
Add geometry shader generator for stereo 3D.
Pass VS_OUTPUT structs between shaders.
VideoConfigDiag: Add Stereo 3D option.
PostProcessing: Add layered stereoscopy support.
VertexShaderManager: Compute stereoscopy projection matrices.
PixelShaderGen: Sample the correct texture layer.
TextureCache: Implement layered framebuffer support.

Stereoscopic EFB2Tex is now supported.
GeometryShaderGen: Allow stereoscopy to be disabled.

Will facilitate future use of this generator for other purposes.
TextureCache: Check the number of layers before reusing a texture.
TextureCache: Set proper vertex limit in geometry shader.

Without instancing 6 vertices are output instead of 3.
ShaderGen: Add a stereoscopy flag in the UID data.
ShaderGen: Handle ShaderCode objects directly.

ShaderGeneratorInterface does not have virtual function members, so we have to implement each type explicitly.
TextureCache: Ignore the geometry shader if stereoscopy is disabled.
ShaderGenCommon: Move uniforms into a common static string.
GeometryShaderGen: Support stereoscopy on GPUs without support for instancing.
ShaderGen: Rename "eye" to "layer".

Keeping things generic.
OGL: Recreate the framebuffers when the stereo setting changes.
VideoConfig: Limit the Stereo 3D option to the OpenGL backend.
GeometryShader: Transform the projection within the geometry shader.

Reduces the amount of data transferred through uniforms.
The shearing transformation is reduced to a single multiplication/addition for optimization.