Add websocket_proto config, fix notebook configs

Currently the protocol scheme used for the websockets is chosen based on
the protocol being served - `ws` for `http` and `wss` for `https`.
Typically this works fine, but it fails when the ipython notebook server
is running behind a reverse proxy such as nginx where the front-end
interface is HTTPS but the notebook server is running over HTTP (which
isn't too insecure as long as they share a host).

This commit adds a new setting `websocket_proto` which can be set to
either `ws` or `wss` to force the websocket scheme to one or other
regardless of the scheme used for standard HTTP requests. If omitted
the previous behaviour is used.

This commit also includes some fixes for apparent references to apparent
bugs in accessing the settings for the notebook.