Add a class to manage IO on a separate thread.

Also separate the logic for exiting the loop based on coreState.  IO and
audio won't necessarily be tied to the frame.
Start and stop a separate thread for IO.

Not actually running anything on it yet.
Run sceIoRead operations on a separate thread.

This should improve stutter.  Also verified via a timer to improve
performance (although, not very much, ~0.07 seconds during an entire
game load.)
Give sceIoWrite the same treatment, for savedata.
Set the IO thread's name for debugging.
Merge pull request #3126 from unknownbrackets/io-async

Use a separate thread for reading/writing