Support key names with unicode chars

The integration test shows the issue.  There were two issues:

* We weren't quoting the url when there was a unicode char so we
  couldn't create objects with unicode chars.
* We were using response.text instead of response.content.  The .text
  property in requests will attempt to guess the encoding if there's
  no explicit encoding provided.  Using the .content attribute gives
  you the raw byte string, and the relevant parsers get the default
  'utf-8' encoding.
Return empty string if there's no body

Now that we're using .content instead of .text
we need to explicitly return a string in the case
of an empty response, otherwises we return bytes().
Merge branch 'unicode-s3' into develop

* unicode-s3:
  Return empty string if there's no body
  Support key names with unicode chars