[profile testing]
Merge pull request #372 from cbare/develop

[profile testing]
Merge branch 's3-test-cleanup-r1' into develop

* s3-test-cleanup-r1:
  Add test for image/png content type
  Python 3 fixes, decode to utf-8
  Rework s3 command tests
Use multipart uploads when necessary with mv command

Fixes #369.

The issue here was that the 'mv' command was not being tested
for multipart uploads so any time you used a 'mv' command we'd always
try to use a single PutObject operation.

The fix boils down to the `_is_multipart_task` method which shows
when something is a multipart upload task.

Long term I think most of this logic will be refactored into it's own
separate class but this fixes the issue for now.

Also, a 'mv' command was implemented as a 'cp' command plus a removal
of the local file.  This required a small update to the
MultipartUploadContext object that allowed for threads to wait on the
completion of a multipart upload.  There's a new RemoveFileTask object
that will only run once the associated multipart upload task is
complete.

Verified the `mv`'ing a multi GB file keeps memory usage under 200 mb.