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.
rewrite _valid_formatter

- explicitly forbid method_descriptor
- explicitly allow builtin_function
- use inspect.getcallargs for any other callable
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.
Move method increment_filename from FileNotebookManager to NotebookManager

The implementation requires only a minor change (call notebook_exists
rather than checking for file existence) to be universally usable
in other notebook managers.
Rearrange the NotebookManager methods for clarity

Methods are organized into three categories:
 - Methods that must be implemented in subclasses
 - Methods that have default implementations, but can
   be overridden if required.
 - Support methods meant to be called by methods in subclasses
check type of date fields in DictDB
fix a couple of datetime entries in the Hub
log exceptions in user requests in the Hub
catch KeyboardInterrupt in parallel tests teardown

because wtf Windows?
reduce test_cull_count test

it is slow, and didn't need to check so many times
monkeypatch RemoteError to include tracebacks during tests
allow datestamps to exclude microseconds

datetime.isoformat() excludes microseconds when the value is zero,
causing a 1/1000000 failure on most platforms, and 1/1000 on Windows due to millisecond datetime resolution.
update test_jsonutil

test previously failing case of no-microsecond timestamps

and update to use nt asserts instead of plain asserts

for better failure messages
Merge pull request #5087 from minrk/master

trust cells with no output