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".
What's the advantage of this? ThreadStatus is just for internal emulator state, so endianness does not matter. It's a cute usage of BitField, but IMO is less clear because:
1) An unfamiliar reader will have to additionally read BitField to understand what it's doing
2) It's not necessarily obvious why waitsuspend is set that way, while ```THREADSTATUS_WAITSUSPEND    = THREADSTATUS_WAIT | THREADSTATUS_SUSPEND``` defines what wait suspend is (both states at once)