Porting to Python 3

Since only a few of us actually run these scripts, migrating to Python 3 should be not very controversial.

I ran `2to3` and then went through all of the scripts and fixed encoding issues of various sorts.

Unfortunately in the middle I got confused and changed utils.download() from returning bytes (as in py2) to returning strings, and that cascaded to various changes in other scrapers. I should have put that in a separate commit.