Fan out download work to the first available node

Instead of randomly selecting a node for a download, fan out per-node
workers and dynamically create a selector set across all of the nodes
containing a given object and let the first available worker grab the
content.

The number of workers per destination is configurable (and should
generally be less than the total concurrency), so you can be sure that
we don't end up in the situation where a slow node eventually slows down
all requests by causing us to hang on it.

The actual transfer rate isn't considered, but in general, slow nodes
should be spending more time servicing requests than fast nodes, so
slower nodes should be less available that fast nodes.  Seems to work
out something like that, anyway.

The results look good, though.  Where I was typically getting an average
of 45MBps or so before, now I'm getting downloads more like this:

    Moved 188GB in 29m7.826797771s (107MB/s)