only validate package_data when it might be used

closes #5046
run check_package_data as part of build_py

rather than explicitly in setup.py
require print_method to be a bound method

closes #4990
add _valid_formatter

for determining whether a method is valid

should properly reject unbound methods of both compiled and Python classes, and allow any other Python callable.
don't allow LazyConfigValue on private names

avoids populating Config objects with `_repr_foo_`, etc.
add regex support to AssertPrints
add IPython.html.nbextensions.install_nbextension

for installing files into IPYTHONDIR/nbextensions
add `ipython install-nbextension` entrypoint
add install_nbextension at top-level IPython.html
support URLs and zip/tarballs in install_extension
typo
rewrite _valid_formatter

- explicitly forbid method_descriptor
- explicitly allow builtin_function
- use inspect.getcallargs for any other callable
allow installing nbextensions with symlinks
add check_nbextension
add IPython.load_extensions in js
trust cells with no output

It's outputs we don't trust, so if there are no outputs there's nothing to distrust.
trust cells with no unsafe output

not just cells with no output
make sure the test notebook has some outputs to check
NotebookManager API: rename *notebook_model methods to *notebook
Add method notebook_exists to NotebookManager.

It is called by IPython.html.notebook.NotebookHandler.get,
so it must be implemented by every notebook handler.