Make our shadercache one file in size.

Instead of generating different shader cache files per game, create only one(2 in D3D) combined cache file for all games.
This is an improvement over the other way since if someone plays hundreds of games the size grows absurdly large(>350MB)
It's also an improvement since even if someone hasn't played a game before, there is a high chance it'll use shaders with the same UID and not have to
generate them again, removing microstutters before the problem even occurs.

The reason why this wasn't how we did it initially was out of concerns that one game could generate a million shaders, while another one wouldn't
generate much at all. Thus having a bunch of programs in vram that weren't in use.
1) This isn't much of an issue since program size in RAM is absurdly small
2) The new shader UID generation has significantly lowered how many programs are generated.