Adding Link widget
Adding directional link widget
Fix whitespace
Updated example notebook
Load link widget javascript
Load the link models
on("destroy",...) -> once("destroy",...) so we don't keep a reference to it, preventing gc

Thanks to Sylvain Corlay for the suggestion.
only check for formatters on instances

use inspect.isclass to disallow unbound methods,
not type checking on the method itself
define kernelpath for clientside notebook manager
return API path instead of filesystem
Move js donc into function themselves.

Then it is possible in the browser js console to get the documentation
interactively.
Print exception instead of "KeyboardInterrupt"

Whenever a KeyboardInterrupt exception occurs in the shell, we should
print the actual exception instead of the string "KeyboardInterrupt".
This is needed to support exceptions inherited from KeyboardInterrupt.
Fix test_get_exception_only() for Python 3
Use sys.path to make filename in traceback absolute
remove _valid_formatter

check in _safe_get_formatter_method

- reject classes
- allow any callable...
- ...except on objects that lazily produce callables at any attribute
gh-7053: check for OSError during rehashx()
Clean up get_kernel_path logic
Warn about .py/.json collisions in config

when two versions of the config file set the same value,
warn about clobbering, with a message, such as:

```
[TerminalIPythonApp] WARNING | Collisions detected in ipython_config.py and ipython_config.json config files. ipython_config.json has higher priority: {
  "Klass": {
    "trait": "'python' ignored, using 'json'"
  }
}
```


In anticipation of more machine-written .json config
Merge pull request #7082 from minrk/warn-collision

Warn about .py/.json collisions in config
Allow FileLinks to not recursive into subdirectories