Process savestates during single stepping.

This way we can handle them on the same thread, without weird delays.
Make it possible to version DoState sections.

This will have the more important benefit of bailing if anything goes
awry.
Check version in each DoState() func.

They bail on PointerWrap error or bad version.
Make sure the saved git ver is null terminated.

strncpy() is a tricky beast.
Don't clear the shader cache on savestate.

Well, it's small, but there should be no point.
Reset the game when loading a state fails.

This way it doesn't crash.
Merge pull request #3773 from unknownbrackets/savestates

Add version/bail checks to savestate sections