API: Allow NotebookManagers to control kernel startup dir. #5468
cleanup some `pre` css inheritance

We had various overrides of the bootstrap defaults for font-size and line-height every time we made a pre tag,
and then some overrides of our overrides when we wanted something slightly different.

This moves the most basic overrides to apply to all pre tags,
reducing the number of downstream changes we need.
First draft of new kernel registry machinery

IPEP 25
Add supporting for making a directory for the native kernel
Better describe functions in kernelspec module
Start refactoring KernelManager to use kernel registry
support binary files in FilesWriter
add PDFExporter

replace `nbconvert --to latex --post pdf`
with `nbconvert --to pdf`
support pdf export in the notebook UI
Miscellaneous fixes to kernelspec system
Expose --kernel arg for selecting kernel on console and qtconsole
Nicer formatting for default kernel files
Allow an arbitrary number of kernel directories to search
Fix writing native kernel spec on Python 2
Rename list_kernel_specs to find_kernel_specs
Added an optional parameter to "CellToolbar.register_callback".

It lists the cell types the UI element must inserted in.
Hide the cell toolbar if there are no ui controls in it.
Hide toolbar of rendered text cells.
Why overriding a method if the new one is exactly the same of the one
in the base class?
Removed "cell_types" parameter from "select_ui_generator".

If you don't want to show the UI element in a cell use the
"register_callback" optional parameter.