Adds p.break_ for explicit newlines in lib.pretty

p.break_() explicitly includes a newline while pretty printing, and maintains indentation.
A simple test is included to show this working.
Uses p.break_() when repr() is used for printing

When a newline is found in the result of repr() (using the default printer), the newline is replaced with an appropriate call to p.break_()
add `setup.py css` command

It just does `cd IPython/html && fab css`, but I'm tired of doing it manually.
engine ID metadata should be unicode, not bytes

fixes `TypeError: b'f5b984b0-fd8c-4873-a23e-658425c1e28a' is not JSON serializable` when an engine dies while working on a task in Python 3.

candidate for backport
Add failing test for SyntaxError display
Fix display of SyntaxError when .py file is modified.
Check for string_types instead of str
Remove bundled copy of argparse

This is no longer needed on Python 2.7 and above.
Import argparse directly from stdlib
AssertPrints checks for instances of string_types
Improvements to docs formatting.
add Kernel.clear_callbacks_for_msg
clear previous callbacks on execute

avoids mixed up display of multiple executions in one output area
when a cell is resubmitted.

closes #4223
Merge pull request #3851 from alexrudy/pretty-newlines

Adds an explicit newline for pretty-printing.

Included:

- ``p.break_()`` inserts a hard newline in the output, maintaining the correct indentation during pretty printing.
- When the pretty printer falls back to the object's ``__repr__`` method, newlines are converted from ``\n`` to ``p.break_()`` to maintain indentation
Select adequate highlighter for cell magic languages

Detect cells that use language extension magics such as %%R or %%bash
and call the appropriate pygmentize lexer.

Closes #4184
highlight: cell metadata to decide how to highlight foreign languages

* Remove magic language detection from highlight filter, and
  replace it by a lookup in the cell metadata.

* The highlight filter now expects a full Cell object instead
  of the Cell input.

* Modify templates so they pass a full cell object.

* Update highlight filter tests
Add HighlightMagicsPreprocessor

HighlightMagicsPreprocessor is in charge of detecting
cells that use language extensions. It tags the cell
metadata with the language used.

Enable HighlightMagicsPreprocessor by default on
latex and html exporters.
Fix eafc8cb070: highlight tests should now pass a cell object
HighlightMagics: merge default languages with the user config languages

* When configuring HighlightMagics, instead of replacing fully the
  language dict by the user provided one, we merge both.
HighlightMagics: Add new default languages