Threading part 2

This adds more advanced threading support - specifically better handling of events and mutexes. This enables mutexes/events to now actually block and a correct context switch to occur. Also adds some stubs for missing SVC functions (DuplicateHandle, SleepThread). Fixes some bugs with how we do context switching. Adds a hack to set the GSP event to always signal "ready for more data".
I don't really know, maybe I find verbosity to be clearer, because it reads `if false equals <complicated expression>` rather than `if (not <complicated expression>) is true`. In any case, `if (!(complicated_expression))` surely looks somewhat ugly.