Don't load curses on startup
Defer import of urllib
Defer import of xml.dom.minidom
Defer import of IPython.lib.inputhook
Defer import of json
Remove unused code
Defer import of optparse
Remove unused imports
codeutil should be imported
Make enable_gui a staticmethod again
Document API change
Merge pull request #2868 from takluyver/import-performance

Import performance

Defer various imports for a small reduction in startup time.

IPython.lib.__init__ previously loaded IPython.lib.inputhook to export some of its functions. This meant that importing anything from IPython.lib also loaded inputhook.

For now, I've just removed that import, but that is an API change, because the functions are no longer accessible as e.g. IPython.lib.enable_qt4

Added a note about the API change.

Timing command, borrowed from Openoffice to simulate cold start:

$ sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches; time ipython3 -c pass

Results with this branch: 7.68, 7.64, 7.35, 7.38 s 'real'
Results with master: 8.17, 8.04, 7.81, 7.77