CLN/ENH/BLD: Remove need for 2to3 for Python 3.

This has a ton of changes, it's not quite passing yet, but it should
soon. I've tried to only add `list` where necessary (and also to make
range, zip, map and reduce all use their iterator forms even in Python
2 -- I think this won't change performance negatively).

Comments/suggestions are very welcome. Obviously I will rebase it when
it's ready to go.