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
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
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
Improve detection of when to load guiref magic
generalise manager
Add json in the base config manager name
Fix javascript iteration through array

for(var k in config) was assigning k to the properties of Array, not just the numeric indices

the second argument of add_buttons_group, k[1], should be config[k][1]
fix leading underscore

mering object with itself is stupid otherwise
JSON formatter expects JSONable dict/list

not already-serialized JSON string

pre-3.0 case of JSON string is handled with a warning.

msgspec5 made this change, but Python APIs that publish
JSON weren't updated to match.
put test in content manager
ensure warnings are raised in tests

avoids missed warnings if the warning was already shown