[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.