Use native map when possible

Implemented on all modern browser.

There is a small behavior difference between $.map and Array.prototype.map
but we don't rely on it.

(jQuery flatten arrays and filters null-like)
create new terminals with POST /api/terminals

instead of GET terminals/new

to be consistent with creating new notebooks.

We had to stop using GET notebooks/new
because browsers would create new notebooks when making preview thumbnails for commonly visited pages, etc.
I assume the same issue would apply to terminals
upate exmaple notebooks to nbformat v4
Make a window immediately, and set its location on response

Avoids the need for async:false
Close new window on error creating terminal
Add REST API for retrieving, storing and updating config
Fix docstring, validate JSON on PUT
Apply JSON config updates recursively
Fix writing JSON on Python 2
Return updated config from PATCH requests
Update pygments monkeypatch for compatibility with Pygments 2.0

Closes gh-6877
Add some explanation about the pygments monkeypatch
Document limitations of symlink parameter to install_nbextension

Closes gh-6239
Merge pull request #6882 from takluyver/i6239-docstring

Document limitations of symlink parameter to install_nbextension
add exponential falloff for reconnect

avoids constant reconnect attempts every 3 seconds forever

gives up after 6 tries (last timeout 64s)
[issue547] add emacs tmp files and .coverage files to gitignore
add sticky `Connection lost` notification

when reconnect process gives up
add Reconnect to kernel menu
[issue6883] catch keyboardinterrupt if generated during shell.system() calls
add events to ws_closed_error in kernel.js