reorganize who knows what about paths

- add NotebookApp.notebook_dir
- add KernelManager.root_dir
- remove NotebookManager.notebook_dir, move to FileNBM.notebook_dir

Default value for KM.root_dir and fNBM.notebook_dir is NotebookApp.notebook_dir, but they can be configured separately.

SessionManager passes the API path to KernelManager,
which is responsible for turning it into the kernel's cwd.
use NotebookManager APIs in nbconvert handler
use config instead of App.instance to propagate notebook_dir

Should behave more logically (I hope).
don't create notebook_dir if it doesn't exist