Remove six as a dependency and fix unit tests.

Review Request #9426 — Created Dec. 5, 2017 and submitted — Latest diff uploaded





The dependency on six was problematic, as it was getting imported
during the packaging process by way of kgb/ importing the
module that imports six, and this was imported by That meant
that packaging would fail if six was not already installed. Since we
need so very little from it (iteritems and text_type), we just
define our own wrapper types.

While testing, I noticed my prior change also accidentally broke tests
on Python 3. Those are fixed with this change by importing our
text_type and plugging in its type name in some error messages instead
of assuming they're unicode.

Unit tests pass on Python 2 and 3.

I was able to build a package from a fresh virtualenv.