IPC-HLE event handling improvements

See commits for detailed description.  Makes the System Menu work much better: installed channels can now be launched from the System Menu.

This is making changes to historically sensitive timing code, but testing hasn't found any regressions involving Wiimote handling (or anything else).
Please don't use abbreviations for the sake of saving 4 letters. This makes the function name confusing. Without the diff, it wouldn't be obvious at all to me that "Enq" is supposed to mean "Enqueue" (which admittedly was spelled incorrectly before).