Python 3 beta six

This branch uses python six to manage some of the differences between python 2 & python 3 a little more cleanly.