Factor out run creation in the worker.

We need to make this a little more complex so separate it out before doing so.
Fix the "fail in post run callback" worker test.

It was failing, but not in the right place!
[TAV-522] Handle network level errors (retry).

The worker code now rescues network level errors (timeouts, etc) and retries the
operation. So far this is just implemented for creating a run as this is where
most such errors would occur.