First pass at multi-queue worker.

This change is backwards compatible with previous versions.
The worker takes an optional, ordered list of queues to work.
When looking for jobs to lock, the worker will start from the
first queue in the list and work its way down the list looking for a job.
If no jobs are found in the list of queues, the worker will wait on the
listen/notify chanel of the first queue in the list.

The listen/notify behaviour is not ideal. It would be nice if the worker
could linsten to all the queue channels for which it is interested in.