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.
support binary files in FilesWriter
add PDFExporter

replace `nbconvert --to latex --post pdf`
with `nbconvert --to pdf`
support pdf export in the notebook UI
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.
Allow validator to be called from reads_json and writes_json
Remove if __name__ == '__main__' code from validator
Clean up validator, and rename nbvalidate to validate
Add comments inside validator
Remove unused convert function from validator
Use /notebook as root key
Update nbformat v3 json schema so example notebooks pass
Add isvalid function which returns True/False
Use logging rather than print statements
Update MANIFEST to include schema json file