* Add Test_Active_ScreenBuffer_Order
* Add Test_GetStdHandle_SetStdHandle
* Also test a STARTF_USESTDHANDLES process in
Test_Detach_Does_Not_Change_Standard_Handles.
* Test combos of CREATE_NEW_CONSOLE, DETACHED_PROCESS, CREATE_NO_WINDOW.
* Test use of PROC_THREAD_ATTRIBUTE_HANDLE_LIST. It cannot be used with
GetCurrentProcess(), but it also can't be used with traditional
console handles.
* Prefer nullptr over INVALID_HANDLE_VALUE. Change ntHandlePointer.
* Also add a public Worker::exit() for killing workers more conveniently.
* Previously, a Worker was either:
(1) fully initialized and running (m_valid==true), or
(2) moved out of (m_valid==false)
Now RemoteWorker::trySpawn() can return an invalid RemoteWorker object.
* TestCommon.h is a convenience header for the test cases. It aliases
Remote{Worker,Handle} back to {Worker,Handle}, and it includes many
basic C/C++ headers, as well as the parts of the harness suitable for
test cases.
* I'm still going to try to include what is used in each module.
* At some point, I should implement these in the main project. It will
need more testing on the various compilers. It really needs to be
on-by-default everywhere. If it's off, then at least pch.h should be
included everywhere, to minimize configuration differences between my
checkout and other people's checkouts.
* There should be some way to configure it off to check whether includes
are correct.
* The change reduces build times from 27.6s to 15.2s on a single-core VM.