[Buildstream 1.4] Add support for Python 3.8
ChildWatcher.add_child_handler
needs to be called from a main loop
and is dispatched through that main loop.
To be able to properly dispatched the ChildWatcher handlers,
Scheduler._terminate_jobs_real
had to be made loop friendly by
yielding between termination and kill so that it knows which process
have been terminated.
Since Scheduler._terminate_jobs_real
now yields instead of blocking,
we need to avoid calling it multiple times from the main loop.