Replace str with six.text_type

Replace str with six.text_type so that unicode exception messages can be
safely processed, and the change is PY3 compatible.

Closes-bug: #1295443

Change-Id: Ic27ec365b82797df37ae53f38d5d31e70cb65c67
Avoid referencing Message.__str__ in exceptions

Change exception.py to accommodate future enablement of lazy translation.
Specifically, encode unicode messages to byte strings as gettextutil.Message
doesn't support __str__.

Change-Id: I16ab67c32d2050d83c1b51b84b24c0a60675aff7
Tidy up urlfetch.py exception handling

IOError doesn't seem appropiate for things like invalid URL scheme
and template exceeding max size. And requests.RequestException means
an ambiguous exception occurred while handling requests, not
necessarily an IO error.

Change-Id: Ib8108a5b9bf6d6c99545a1c29735521720d3a75a
Replace str with six.text_type in tests

Replace str with six.text_type in necessary places, so that lazy
translation can be enabled in subsequent patches.

Change-Id: I40732ec7e9f53b3cb487880965797253452f95cd
Merge "Replace str with six.text_type"
Merge "Avoid referencing Message.__str__ in exceptions"
Merge "Tidy up urlfetch.py exception handling"
Merge "Replace str with six.text_type in tests"