worker: shut down gracefully on SIGTERM

This is for signal consistency. We can't really use the new ENV setting, since it's timeout based. Our jobs aren't idempotent, so we can't just requeue the job like it's suggested you do in those cases. Instead, we block until the job finishes which is the current behaviour in production and consistent with what we're going to do for Unicorn.

@burke @graemej