2to3: Apply `imports` fixer.

The `imports` fixer deals with the standard packages that have been
renamed, removed, or methods that have moved.

cPickle      -- removed, use pickle
commands     -- removed, getoutput, getstatusoutput moved to subprocess
urlparse     -- removed, urlparse moved to urllib.parse
cStringIO    -- removed, use StringIO or io.StringIO
copy_reg     -- renamed copyreg
_winreg      -- renamed winreg
ConfigParser -- renamed configparser
__builtin__  -- renamed builtins

In the case of `cPickle`, it is imported as `pickle` when python < 3 and
performance may be a consideration, but otherwise plain old `pickle` is
used.

Dealing with `StringIO` is a bit tricky. There is an `io.StringIO`
function in the `io` module, available since Python 2.6, but it expects
unicode whereas `StringIO.StringIO` expects ascii. The Python 3
equivalent is then `io.BytesIO`. What I have done here is used BytesIO
for anything that is emulating a file for testing purposes. That is more
explicit than using a redefined StringIO as was done before we dropped
support for Python 2.4 and 2.5.

Closes #3180.