Using a class varilable instead of temp files for keeping track of docs.

:meth:`IpythonDirective.setup` method was using a temporary file, such
as :file:`/tmp/seen_docRANDOM`, for storing visited source document
filenames. For a document that is not visited (name not in the temporary
file), it restarts counting line numbers.  Temporary file names are
selected randomly and they were not deleted from the disk upon
completion of a build. Since :meth:`.setup` picks a temp file
arbitrarily to visited status of a file is determined incorrectly.
Using a class variable resolves this problem.

Changed the directive setup function to use a class files for keeping
track of documents.
Fixed a problem with evaluating indented lines in pure python code.

:meth:`EmbeddedSphinxShell.process_pure_python` could not process
block of code with indentation correctly. For example, the following

.. ipython:: python

   for i in range(10):
       if i < 5:
           continue
       else:
           pass

would result in two IPython lines:

In [19]: for i in range(10):
   ....:      if i < 5:
   ....:          continue
   ....:

In [20]: else:
   ....:          pass
   ....:

This would raise various types of error, indentation/snytax, etc.

To resolve this problem, added a simple check for indentation
in the next line which normally start a new IPython line.
Merge branch 'master' of https://github.com/abakan/ipython
Reverted an unintended change in matplotlib backend.
move safe_unicode to py3compat
user_variables and user_expressions use rich repr API

each key will be a rich display_data message rather than plaintext reprs.
test user_variables/expressions in message spec
add user-expressions/variables changes to message spec
decode subprocess output in launchers

closes #3326
Fix IPython.utils.path when HOME=/.
Fix subrepos.
Pop out any existing IPYTHONDIR or IPYTHON_DIR variables.
update qtconsole with user_expressions changes

lsmagic now uses JSON, rather than ast eval
use sets when testing user expressions

avoids ordering issues
skip submodule check in package managers

custom DEFAULT_STATIC_FILES_PATH means a package is responsible, and everything should be assumed to be fine.
check static path components
s/os.path.split/os.path.dirname/
%lsmagic returns a RichRepr of the magics dict

- pretty / str representation are the regular lsmagic output
- JSON repr is just the magics dict with instances replaced with their class names in order to be jsonable.

qt magics menu population updated to reflect this.
add missing ClusterApp mixin to SSHClusterLauncher

fixes AttributeError on profile_dir in SSHProxyEngineSetLauncher

also adds SSHProxyEngineSetLauncher to ssh launcher collection,
which adds it to the generated config files, help output, etc.
basic launcher tests

doesn't do much at the moment,
but at least makes basic exercise of constructing objects