VideoCommon: keep a copy of the const buffer in VideoCommon

The upload in the backend isn't done, it's just pushed by the mostly removed SetMulti*SConstant4fv.
Also no optimizations was done on VideoCommon side, but I can start now :-)

Sorry for the hacky way, but I think this is a nice (working) snapshot for a much bigger change.
ogl: implement useful constant buffer upload

this will remove the additional memcpy introduced in my last commit
D3D: also uses VideoCommon constant buffer handling

As now both backends uses the VideoCommon one, the old setting API was removed.
videoCommon: remove not supported constant types

I'm pretty sure GPUs can read u8 values, but this isn't exported by the API.

But hey, see unpackSnorm4x8 :-)
VideoCommon: refactor PixelShaderManager setters

The old way was to use a dirty flag per setter. Now we just update the const buffer per setter directly.
The old optimization isn't needed any more as the setters don't call the backend any more.

The follow parts are rewritten:

Alpha

ZTextureType

zbias

FogParam

FogColor

Color

TexDim

IndMatrix

MaterialColor

FogRangeAdjust

Lights
OGL: update ubo workaround
VideoCommon: remove SetVSConstant4f
VideoCommon: fix dstAlpha
VideoCommon: reimplement Dirty() in PixelShaderManager

This isn't needed in VertexShaderManager as it's still in the old dirty flag way.

But it's very importend for PixelShaderManager as some float4s aren't initialized as 0.0f
Merge branch 'const_buffer_rework'
VideoCommon: revert the ViewPort changes

xfregs isn't written when calling this function, so we have to use such an invalid flag :-(
VideoCommon: Update FastDepth's comment
PixelShaderGen: Refine the comment from revision 3fbe1b1ccdcf.
Remove unused variable waitingForPEInterruptDisable.
Perf: Use unordered_map instead of map in very slightly hot function.

Incrementing an unordered_map's iterator is a bit faster.