D3D: Fixed D3D validation error during EFB to texture copy

Texture was being bound as a render target while still being set as a shader resource.
D3D automatically unbinds the SRV in this case and generates a validation error.
The fix is to manually unbind SRV, render into it and then re-bind to old slots.
VideoSW: rewrite VertexLoader to use the VideoCommon one
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.
D3D: Moved setting texture by slot mask into StateManager
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.