Have job processing wait for asynchronous job to finish

Otherwise it closes the log while the queued-command-runner is executing
the command. This also allows us to report errors that occurred during
push (though I'm not sure how we are guaranteed <-runner.Errors is our
error).