Python 3 Support

For the first cut, it relies on Six, but we can probably drop that dependency relatively easily.