Support Python 3 using six

This is the only test that concerns me -- I don't know why this fails. In my local testing, it appears that `kps[0].name` was "bar" and `kps[1].name` was "foo" on Python 3. Could it be something with the changes to how `dict.key()`, `dict.values()`, and so on are implemented in Python 3?