Allow InputTransformers to raise SyntaxErrors

This is a relatively trivial modification of the IPython main loop to
catch a possible SyntaxError and print it instead of
quitting. Doctesting this change is somewhat tricky since we actually
need to run the main TerminalInteractiveShell.interact() loop, and is
done through a subprocess and piping in a testcase.
Also catch SyntaxErrors from InputTransformers in run_cell()

The run_cell() method is not used in the IPython terminal, so there
are two code paths where the SyntaxError needs to be caught.  Also,
this commit moves the terminal test to IPython/terminal/test/ instead
of IPython/app/test. I've checked that this works in the terminal, the
Qt console, and the html notebook.
Refactor run_cell for clarity.
Don't clear input if InputTransformer raises SyntaxError.
Mechanism for testing terminal interact loop in-process.

While this is complex, I much prefer it to starting a separate process
and piping commands in.
Protect Qt console against SyntaxError from input transformers.
Document various QtConsole embedding approaches.

Also added loading of default config to the in-process embedding example.
Correct the explanations for embedding.
Revert config-loading change in embedding example.
Clarify embedding in IPython; mention 4th method.
Simplify IPythonInputSplitter API
Catch transformer syntax errors in zmq terminal console
s/model_name/_model_name
s/Underscore/_
Improve description of Qt console embedding options
update components with font-awesome 3.2.1
font-awesome 3.2 moved resources
update css with font-awesome 3.2.1
mention msgspec versioning, and note v4.1 changes
msgspec version is 4.1