various unicode fixes and tests

- always use `u''.format`

because `'{}'.format(u'ü')` will coerce to bytes on Python 2, which is the opposite of the behavior of `'%s' % (u'ü')`, which promotes to unicode.

- add requests-style response_text

handles decoding based on headers and doesn't fail on bad encoding (will happen on gists with binary data, which have incorrect encoding).