Rework the child-boot logic to better deal with state fluctuations

When a child has to restart, it would previously actively wait for the
parent to enter the "Ready" state - although that parent would not be
ready to boot that child yet.

To fix this, add two channels each slave node: One to request
permission to boot from the parent, and the other to allow answers
from the parent back to the child. Now, the parent can answer these
boot requests as soon as it's ready, vastly reducing the amount of
deadlocked processes after large-scale file operations (like after a
`bundle install` or a `git checkout some-other-branch`).