unquote S3 key names before sending to backend
support encoding_type when listing S3 bucket
urls and responses should be bytes, not unicode

Key names and the xml response bodies are unicode encoded but
moto should decode them to bytes before sending them to clients.
Internally we keep unicode strings.
flask sends unquoted URLs, so accept unicode characters
require boto greater than 2.21.0 for encoding_type tests