Remove src/dest resource existence check

Rather, just try the operation and handle the case
when it fails.  This is to address issue 328.  The problem
is that in order to verify that the resource exists, we need
a separate set of API calls than we use to actually retrieve/upload
the resource.  This is problematic if you want to give specific
permissions for a user (they only have access to download files, they
can't see a list of available files).
Add attributes to exception in errorhandler

This lets code programmatically process the error attributes.
Remove newline between task fail and error messages

This makes it easier to follow that a particular upload failed
for a specific reason, rather than having to track this over multiple
lines.
Add a short circuit path for listing a specific s3 object

This avoids the need for calling a ListObjects command.
Add tests that verify what ops were called

Verify we only call GetObject/PutObject for the cp
command single file uploads/downloads.
Add unit test for recursive download
Merge branch 's3-cp-permissions' into develop

* s3-cp-permissions:
  Add unit test for recursive download
  Add tests that verify what ops were called
  Add a short circuit path for listing a specific s3 object
  Remove newline between task fail and error messages
  Add attributes to exception in errorhandler
  Remove src/dest resource existence check