Replace the shader uid system with a new one which quasi-automatically generates uids for shaders.
Currently used in the vertex shader only (had to fork lighting shaders for now).
Moved some of the new shader uid stuff to a common header file.
Added new shader cache uids for pixel shader gen.
Move new lighting shader uids to LightingShaderGen.h
Some cleanups, add more fields to pixel shader uid.
PixelShaderGen: Some more work...
More work on making new pixel shader uids work
Add some code for generating a shader constant usage profile.
PixelShaderManager: Reduce number of redundant shader constant updates
Fix a few other things
Partially revert "Now CG plays nice with this new stuff."

This reverts commit 3943840d5c422af45941a96e6d4407d59380b39d.

Suppport for old GLSL versions has been dropped, so to make things less ugly we can use a structure for lights again.
VertexShaderGen: De-uglify VS output structure writing
Merge 'master' into shader-uids-awesome.

Conflicts:
	Source/Core/VideoCommon/Src/LightingShaderGen.cpp
	Source/Core/VideoCommon/Src/PixelShaderGen.cpp
	Source/Core/VideoCommon/Src/PixelShaderGen.h
	Source/Core/VideoCommon/Src/PixelShaderManager.cpp
	Source/Core/VideoCommon/Src/VertexShaderGen.cpp
	Source/Core/VideoCommon/Src/VertexShaderGen.h
	Source/Plugins/Plugin_VideoOGL/Src/PixelShaderCache.cpp
	Source/Plugins/Plugin_VideoOGL/Src/PixelShaderCache.h
	Source/Plugins/Plugin_VideoOGL/Src/VertexManager.cpp
	Source/Plugins/Plugin_VideoOGL/Src/VertexShaderCache.cpp
	Source/Plugins/Plugin_VideoOGL/Src/VertexShaderCache.h
ShaderGenCommon: Introduce a common shader generator interface to make stuff less confusing.
ShaderGenCommon: Replace the GenOutput enum by using typeid instead.
Fix Windows build, try 1.
Fix Windows build, try 2.
Fix Windows build, try 3.
Fix Windows build, try 4.
Fix Windows build, try 5.