Uses events for ContentManager.save_notebook...
Uses events for ContentManager.save_notebook
Modifies ContentManager.save_notebook() to use events, so that the Notebook instance can listen for success or failure events. Also moves some logic out of save_notebook()