* Allow creating a RemoteWorker object without spawning a new worker.
It can be used like so:
{
Worker w(Worker::DoNotSpawn);
if (...) {
w = ...;
} else {
w = ...;
}
}
* Remove the weird RemoteWorker(std::string) ctor. The computation of the
worker name should be inside the ctor.
* It now becomes possible to initialize a RemoteWorker using syntax like:
Worker w({ true, 0 });
However, these are still ambiguous:
Worker w({}) // could be move-init from a default-init Worker
Worker w({1}) // could be move-init from a Worker(SpawnParams{1})
* Make the Event ctor explicit. The SpawnParams ctor needs to be
non-explicit so it can be used with the braced initializer list.
* 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.