Correct errors for async io, other io fixes

Fixes:
 * Opening disc0:/ as a directory was opening umd0:.
 * Ensure umd0: savestates are done properly.
 * sceIoChdir error handling.
 * Proper error codes when there's no async operation pending when waiting/polling.

Tested a number of games fixed by async IO, and others using async IO, and they seemed fine.  Still need to clean up my async IO tests, can probably do at least these without requiring a umd.  But they do match, anyway.

-[Unknown]