exit(3) from within the runtime is racy because some worker
threads could hold references to resources which are freed by the thread
To solve this problem the new functions
are introduced which initiate the termination of the runtime and exit
the current worker thread.
We have to ensure that no worker thread is using resources that are owned and
freed by other threads. This is done with a Latch that the workers use to synchronize before actually terminating.
The exit status specified by the worker thread is propagated to the
Runtime::waitUntilFinished which will call
the worker provided status.
Fixes #14 (closed).