update json_errors decorator

separate handling of HTTPError and unhanded exceptions
fix `--notebook-dir` configurable when there is no trailing slash
adjust definition of 'path' in notebooks

never includes leading or trailing '/'
move url_[un]escape to utils from nbm
mixup notebook_list
move os_path to FileNBMan

doesn't belong in base NotebookManager
log exceptions parsing JSON
fix dashboard upload
cleanup old, unused `/notebooks/foo` API methods

these have moved to `/api/notebooks`
update upload and copy

adds 'notebook.ipynb/copy' url handler

because we were putting too many things in a single POST handler.
use `async : false` to avoid pop-up blocker on New / Copy notebook
save before download-as

uses `async : false`

closes #852

download-as-py still unavailable.
add TrailingSlashHandler

redirects all GET requests with a trailing slash
ensure 'path' never has leading or trailing slash in nbmanager

Don't trust API callers to always get this right.
simplify handler patterns

PATH pattern will now sometimes include leading slash,
but that's okay because nbmanager will strip them.

fewer redirect patterns needed
don't let empty strings introduce extra slashes in url_path_join
properly hook up tornado loggers
always set location on PATCH

don't redirect
Improve tests for notebook REST API
Add test for REST API uploading notebook