Fix more race conditions
Overall this:
- Fixes a bug that was happening in Timeout001.hs where we sometimes got deadlocked in the non-alertable wait as we didn't always wake up the C runner.
- Removes a few more potential race conditions.
- Fully separates the threaded/non-threaded IO loops on the haskell side (step/processRemoteCompletion)
As of this MR I'm not aware of deficiencies in the compiler internal code. Wider testing will require updating of some boot libraries.
My plan is now to:
- Patch enough boot libraries to run the full testsuite.
- Combine these patches into this MR
- Test the whole thing together, then if it works merge this MR
Edited by Tamar Christina