Ported to 3.x

Fixed to work in 3.x (3.3.2 tested) however in doing so I haven't made
it maintain 2.x support.
Added 2.x maintainability

Ported to 3.x with 2.x maintainability via the module six (added six to
setup requirements)