VideoCommon: Add a separate constants buffer for the geometry shader.
GeometryShaderGen: Pass the primitive type and always run the generator regardless of stereoscopy.
GeometryShaderManager: Upload Line/Point width constants.
GeometryShaderGen: Redefine gl_InvocationID so we can use the same variable name in both backends.
GeometryShaderGen: Support multiple primitive types.

And make more stereoscopy code optional.
VideoCommon: Assume we always use a geometry shader, not just for stereoscopy.
VideoCommon: Merge LineGeometryShader into GeometryShaderGen.

This adds line-width emulation support to OpenGL.
VideoCommon: Merge PointGeometryShader into GeometryShaderGen.

This adds point-width emulation support to OpenGL.
GeometryShaderGen: Declare a prototype for EmitVertex().
GeometryShaderGen: Use signed integers for the texture offset flags.
GeometryShaderGen: Remove redundant declaration.
GeometryShaderGen: Pack uniforms more tightly.
VertexManager: Disable culling for lines and points.
GeometryShaderGen: Cosmetics.
GeometryShader: Disable the geometry shader stage if it is a pass-through shader.
VideoCommon: Pass interface blocks between shader stages to resolve naming conflicts.
OGL: Don't generate a geometry shader if the backend doesn't support it.

This commit repurposes the bSupportsStereoscopy flag as the bSupportsGeometryShaders flag.
D3D: Set the geometry shader before every draw call.

And refactor the VertexManager draw call.
GeometryShaderManager: Set the constants within the callbacks.
VideoCommon: Only use interface blocks when geometry shaders are supported.