only check for formatters on instances

use inspect.isclass to disallow unbound methods,
not type checking on the method itself
remove _valid_formatter

check in _safe_get_formatter_method

- reject classes
- allow any callable...
- ...except on objects that lazily produce callables at any attribute
remove special handling of ipython_kernel in launcher

- set JPY_PARENT_PID and JPY_INTERRUPT_EVENT env variables for all kernels
- no custom kernel args other that console passthrough
- use devnull instead of `--no-stdout` (comments claim it shouldn't work, but tests suggest it does - let's keep an eye on this)
moving, checking MathJax typesetting to WidgetView

widget rendering should not fail hard if MathJax is not available
also setting text in widget.typset
reversing order of arguments, as text may already exist
moving typeset to DOMWidgetView
accept node or selection
moving typeset to utils, usage in cell and outputarea
Keep Cython filenames in tracebacks
deprecate IPY_INTERRUPT_EVENT

Jupyter FTW!
add utils.get_url_param

I really cannot believe that we need to write this ourselves
allow kernel_name to be specified in url parameter
change kernel spec placeholder name to 'Kernel'
handle undefined settings in promising_ajax
Add kernel-select dropdown to new notebook button

most recent choice is remembered in localStorage
include current kernel name in new notebook dropdown
separate selecting default kernel from new notebook with specified kernel

adds checkmark to indicate selection
kernelspecs is a dict

sort menus client-side
store current kernel selection in frontend config

instead of localStorage