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.
Run callbacks in creation order, not notify order.
Delete callbacks when their thread is deleted.
Refactor waiting thread cleanup.
Refactor waiting thread removal.
Merge pull request #3700 from unknownbrackets/callbacks

Improve callbacks (still not rescheduling properly inside one)