Make errors more informative; replace dumb printf-style syntax with not-so-new str.format() hotness

For the second part, it forces Python 2.6 or higher; moreover I didn’t touch some files or strings intentionally.  In case something breaks, I might have done something bad.  I tried not to replace strings that were not in the file.  Also, I didn’t touch `plugins/task_sitemap/sitemap_gen.py` because it is (a) not yours and (b) messy. (I also happily ignored it with the flake8 fixes a bit ago for the same reason)

PS. I left out the following because it will be fixed in #304, that should be usable by now.
```
utils.py:    reStr = re.compile('^%s(.*)' % re.escape(match))
utils.py:    re_md_title = re.compile(r'^%s([^%s].*)' %
utils.py:    re_rst_title = re.compile(r'^([%s]{4,})' % re.escape(string.punctuation))
```