Named queues

Introduced named queues as discussed in #8.

### Highlights

* Instead of having a queue per `vnode`, there is now a queue per named queue on each `vnode`
* The task hash passed to `enqueue` needs to include a `:queue` key
* The `claim` and `count-queue` calls now take a `queue` argument

Right now there is no garbage collection of named queues that are no longer used, so the overhead of a `ConcurrentSkipListSet` will be around until the process is restarted.

Fixes #8.
There was a bug in this function where it was actually returning `nil` instead of the claimed task, which was causing problems for `vnode/request-claim!`. It expected a claimed task to be returned, which it passed to `(queue/update! (:queue vnode))`.