OS_Exit register corruption fix + improved error safety
- Add some test code to explore and check OS_Exit behaviour across various OS versions
- Fix a register corruption bug that I introduced when changing OS_Exit to use TaskControl_ResetStacks in commit feb95c37; this was causing non-zero return codes from C programs (and potentially other software) to be lost
- Improve safety of OS_Exit by having it sanity check error pointers before passing them to OS_Exit, replacing them with either "Return code limit exceeded" or "Negative return code", as appropriate (as used by
*Set Sys$ReturnCode
)