add Application.launch_new_instance classmethod

allows uniformity when making changes.

The change here that prompted it is passing arguments to the instance constructor and initialize.
use launch_new_instance classmethod to launch apps
add IPython.start_ipython

A public API for starting a real (non-embedded) IPython instance.

should avoid API breakage in the future due to simple module renames

as has just happened with the removal of frontend
expand start_ipython / embed docstrings

clarify the difference between them.
add IPython.start_kernel

for symmetry
Application.launch_instance

removes `new` from method name, since it isn't accurate.
use start_ipython in entry points

increases visibility of the public API to snoopers.
remove extra empty lines
Add failing test for gh-3547
Simplify caching of modules from %run-ing scripts.

Previously, we cleared and re-used a single FakeModule instance in which to
run cells, and cached copies of the modules' namespaces to prevent them from
being cleared. Now, we cache one FakeModule instance per script file, clearing
it and re-using it if the same script is re-run. This seems more robust.

Closes gh-3547
Another passing test :-)
Minor tweak to test for Python 3
up default max_msg_size to 1MB
warn about messages dropped due to oversize
Mention API changes in whatsnew doc
added examples and info for nbconvert
more informative "template not found" message
added listing of known exporters on error
print supported TARGETs for nbconvert --help
Corrected a typo in the format string for strftime