A job should only be requeued when it was interrupted.

If end(false) is called on the job executor, the job that is currently
running is allowed to finish. Consequently, we should not requeue a job
in that case.
Add unit tests for durable queues.