[batch] timeout for worker activation (#8816)
[batch] timeout for worker activation (#8816)

This moves `self.activate` into a `wait_for` with a timeout. We use a tight try-except
around the activation code to provide a precise error message if activation fails.

If activation succeeds, we enter the else branch which operates as before. If activation
times out we do not deactivate. This is OK, we probably did not activate. If we did activate,
batch will eventually find out.
cseed/hail,hail-is/hail,hail-is/hail,danking/hail,danking/hail,hail-is/hail,cseed/hail,hail-is/hail,hail-is/hail,cseed/hail,hail-is/hail,hail-is/hail,hail-is/hail,danking/hail,cseed/hail,cseed/hail,cseed/hail,cseed/hail,danking/hail,cseed/hail,danking/hail,danking/hail,danking/hail,danking/hail