Add notion of action that differs from  shortcuts.

This decouple the notion of shortcut from the notion of executed "action"
This allow the shortcuts manager to be purely describe as data, and the
same action to be later refered to either from the shortcut, from a toolbar
button or a menu.

This also implement a more complete keyboard shortcut handler which is
able ton interpete sequences like `Cmd-X,Meta-v` By storing the
shortcuts in a tree.
remove debug
add test warning shadow
Public server firewall configuration

Added section on firewall configuration.  This should prevent users (like me) from struggling
to figure out why their servers aren't executing code.
Fixed port range

Actual port range for ZMQ is 49152 through 65535.  Also fixed some grammar/spelling issues.
Don't dismiss rename dialog until rename is complete

- draws error message in the same dialog,
rather than triggering a new dialog via events.

- `Notebook.rename` returns the contents Promise, rather than registering its own error handler.
nbconvert --to script

Use extension and mime type from NB metadata
'Download as' script
Update docs about kernel_info_reply
Fix asyncy nbconvert to download
Allow starting the server with both file_to_run and notebook_dir

file_to_run and notebook_dir would collide, with possible dictionary
ordering randomness depending on how they were passed.

With this change, the default value of notebook_dir is pulled from
file_to_run, instead of pushing the value when file_to_run is changed.
This makes it possible to specify both and have the server behave as
expected.
Allow FileContentsManager and MappingKernelManager to be used outside NotebookApp
A Union Traitlet
Allow for trait types like Type or Instance
Test for Union Traitlet
validate -> _validate
resolve classes
Overload __or__ on traitlets and add a test
Use os.remove instead of shutil.rmtree if we try to remove a symbolic link

If we try to remove a symbolic link to a directory with shutil.rmtree, we get
the error “Cannot call rmtree on a symbolic link”
fix clientside notebook manager and assume tree is dir by default

Assume tree url are dir by default instead of file, and if
not do a redirect. Usefull for Clientside manager where the server
does not know the content of the drive, and think that everythong exists.