Introduce Notification Area
This allow several notification widget to be next one to the other in the notification area.
The Api allow also to register a callback if the user click on the notification. and allows sticky and non sticky notification.
I have created a base class for all notebook managers. Our
existing, file-based store, is now in filenbmanager.py. I have
also created a new Azure Blob based backed notebook manager.
The behavior is the following:
* If you press UP while on the first row, you go to the beginning of the line.
* If you press UP again (or were already at the beginning of the line), you
go to the previous cell.
* If you press DOWN while on the last row, you go to the end of the line.
* If you press DOWN again (or were already at the end of the line), you go
to the next cell.
This applies to `CodeCell`s and `RawCell`s.
add FileFindHandler for Notebook static files
* The static file handler now uses a search path, instead of a single dir.
This allows easier customization of available js/css,
and provides a place for extra files to go for extending the notebook.
* An empty custom.js / custom.css are added to the templates for trivial
custom user styling/scripting.
The search only happens once, and the result is cached after the first.
* A few methods are pulled from tornado 2.2-dev verbatim to have tornado 2.1 compatibility.
* mathjax is now installed by default in profile.
win32 iptest: Use subprocess.Popen() instead of os.system().
The call to `os.system` in `iptest` prevents us from easily setting `$IPYTHONDIR` to a temporary directory. In theory we should be able to use `subprocess.Popen` instead of `os.system` in Windows. This would unify the code structure and make it easy to pass in a different environment.
Note that Python < 2.7 does not have `os.kill`. I've attempted to work around this by using `ctypes` to kill any living processes.