Cap the task queue size to a fixed amount

If the worker threads can't keep up with the rate that
tasks are being placed on the queue, the queue can grow to a large
size and consume a lot of memory.  Now, the queue is capped to 1000
which means that `put()` calls will block until a worker thread
pulls an item off the task queue.

Confirmed that this kept memory usage to fixed amount.  Syncing
250k 512 byte files kept the total memory usage around 100Mb the
entire time.
Merge branch 's3-sync-memory' into develop

* s3-sync-memory:
  Cap the task queue size to a fixed amount
Merge remote-tracking branch 'upstream/develop' into develop