Convert str, basestring and unicode to use six
Convert exception syntax to Python 3 compatible

This is the Python 3 syntax which is also support in Python 2.6.  So
convert to make porting easier going forward.
Break out packages that only work on Py2

Default install is only for packages that work in both Py2 and Py3