load the per kernel kernel.js and kernel.css

As per discussion, each kernel can provide a file name kernel.js that
we try to load at kernel switching. If such a file exist we assume that
the kernel pathches the javasscript and that this javascript cannot be
unpatched, and further switching of the kernel cannot be undone without
reloading the page. (separate PR for UI)

if a kernel provide kernel.js, the it should consist into a AMD module
definition that uses require.js the module shoudl define a function name
`onload` that will be called at the appropriate moment before the kernel
starts.
Fix typos, rephrase english. Thanks Kyle.
adresses Min comments
Another widget promise bug fix
Fix persistence API,
it expecited a view dictionary not a dictionary of view promises
Make widgets persist across page refresh
pin less to 2.x

1.7.x causes different results, and it's probable that 3.x will as well.

It might even be appropriate to pin to 2.1.x.
move setting nb.kernelselector inside kernelselector itself
sort dashbord in frontend
allow Configurable._config_default to load default config
test _config_default
add IPython.config.get_config

returns config on global app if there is one
various fixes in utils.js

revealed by linters

- remove duplicate WrappedError definition
- regex_split doesn't actually allow string separator
- remove various unused variables
- fix some incorrect regex escaping
- add missing quotes in $('body')
- remove a `for(attr in object)` because javascript
emit valid html:

Not closed div, <a> don't have alt but title, chrome frame has been
closed for at least a year, IE shoudl use edge mode. div cannot embed
span.
just indent everythin twice
fix ordering dirs > notebook> files
do not try to fix mathjax URl
qtconsole: Remove wrong overloaded signal call

This was discovered when checking the code with PyQt5
Make guiref work again
Add default (None) values to HBChannel constructor

This is needed for PyQt5 compatibility