Reliable queues

This branch implements durable/reliable queues. Queues are polled with the atomic RPOPLPUSH command to store the job on an in-flight list. If the job was completed through termination, it is requeued. Otherwise it is just removed from the in-flight list.

An additional process can be used to requeue jobs in the case a worker was terminated improperly (e.g. via a SIGKILL).