Cleanup sceKernelCreateCallback().

And tweak sceKernelReferCallbackStatus().
Keep a single list of pending callbacks.

Doing it per type only meant that we'd incorrectly call a callback twice
if it was notified by e.g. scePowerRegisterCallback() and
sceKernelNotifyThread(), which isn't what's supposed to happen.
Decentralize callback registration.

Callbacks are always tied to THEIR thread, and the registration was all
based on the current thread which is just not the right way.
Clean up umd bad callback id errors, oops.
Remove the interrupt during callback hack.

It was wrong, although it may have been helping some things.  Need to
remove it to replace it with a better solution.
Add a little helper to manage thread stacks.
Get rid of "pending" mipscalls, use stack.

This should be more similar to how it actually works on a PSP.
Effectively disables all g_inCbCount checking, but not removed yet.
Stop acting differently inside callbacks.

They're really not very special, except that they suspend waits.
Report any missing wait type handling funcs.