2to3: apply `dict` fixer.

In Python3 `dict.items()`, `dict.keys()`, and `dict.values()` are
iterators. This causes problems when a list is needed so the 2to3 fixer
explicitly constructs a list when is finds on of those functions.
However, that is usually not necessary, so a lot of the work here has
been cleaning up those places where the fix is not needed. The big
exception to that is the `numpy/f2py/crackfortran.py` file. The code
there makes extensive use of loops that modify the contents of the
dictionary being looped through, which raises an error. That together
with the obscurity of the code in that file made it safest to let the
`dict` fixer do its worst.

Closes #3050.
MAINT: Fixup more dictionary fixer fixes.

Most of these are places where an iterator will work as well as a
list, but two fix places where `iterkeys` was introduced which is
a bug.
Merge pull request #3205 from charris/2to3-apply-dict-fixer

2to3: apply `dict` fixer.