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
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
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
update moment.js to 2.8.4
add utils.time

consolidate some time-related utils, used in save widgets
fix regular checkpoint updates in notebook

in master, this was updating every 10 hours,
regardless of the value, due to a variety of bugs,
including using relativeTimeThreshold getters
that do not exist in moment.js 2.7.