Reintroduce #614, fix for urlencoding source param in s3 copy

This adds on #614.  The issue was that we need to move *all* of the encoding/urlencoding into botocore.  This means that the CLI should not be utf-8 encoding the source param, otherwise we double encoding the param.  This is what originally caused the unicode test regressions.

Verified that unicode/`+` chars can properly be copied to from S3 buckets.