Fix some minor issues in psmfplayer, schedule finish correctly

FF2 was locking up because the finish status was set too early.  It should be set on the psmfplayer thread, at whatever status the game set.  For example, after the audio thread has woken up in FF2's case.

This adds a helper to do that with normal thread scheduling.  It could theoretically do more (like audio sync and warmup probably are affected by thread priority), but I don't know of any observable differences that matter for that right now and it's a pain, heh.

Other changes:
 * Trigger finish after the second update on the last presentable frame, matching tests.
 * Correct seeking to specific pts (had some drift.)
 * Minor error codes/scheduling in a few places.
 * Don't stop writing frames from scePsmfPlayerGetVideoData(), even after video end.

Just a few more tests and I'll have psmfplayer mostly all figured out.  Just a few funcs left.

-[Unknown]