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 find `thread->status = true;` ridiculously easier to read than `thread->status = (thread->status & ~THREADSTATUS_RUNNING) | THREADSTATUS_READY;` (the latter which also has a large potential for making dumb typing mistakes). You don't even need to dive into BitField details to understand that code, because it's not even apparent that it's a BitField unless you look at the declaration.

Honestly speaking, I don't know how you think accessing individual bits like this would be considered easier to understand than BitField usage.

About 2), I'm not really sure what you're saying, mostly due to a lack of understanding what "wait suspend" even is. If your point is that it's not clear that "waitsuspend=0b11" is the same as "wait=1; suspend=1", then just use the latter instead and drop the waitsuspend member.