https://github.com/klenin/Spawner/pull/22
I split that PR into two as much as I could. Unfortunately I have no
time to properly test it, though it compiles.
Took ~4 hours, may be I'm doing something wrong: I reverted to the state
where I didn't merge upstream first, then I rebased through everything
to fix stuff we discussed at sat, 6th. Then I found I screwed up
amending some fixed conflicts instead of `git rebase --continue`. So I
aborted rebase did the whole thing again. Then created a new branch
below all those commits for control-mode changes, cherry picked
control-mode related commits, fixed conflicts in process. Then I checked
out master and rebased again to remove those commits I cherry picked,
again fixing helllot of conflicts in process. Rebased new branch onto
master then. Then rebased master onto upstream.