Add tests for multipart downloads via cp/mv commands
Port range downloads into new implementation

Eagerly add the parts to the queue.  This required
creating a context object to track dependent task state,
similar to what was done for uploads.

I also noticed that we weren't cleaning up bad downloads
appropriately either so I've added code to clean partially
complete downloads.

The old multipart code has been removed.
Remove the remaining parts of the old multipart implementation
Remove unused stdout.flush() call
Remove unused .flush() call
Merge branch 's3-multipart-download' into develop

* s3-multipart-download:
  Remove unused .flush() call
  Remove unused stdout.flush() call
  Remove the remaining parts of the old multipart implementation
  Port range downloads into new implementation
  Add tests for multipart downloads via cp/mv commands