Persistence API,

This is a combination of 10 commits.
Enable widget instanciation from front-end.

Address @minrk 's review comments.

Make API that allows users to persist widget state easily.

Added support for view persistence

Started adding support for model persistence.

Half way there!

Finished persistence API.

Move persistence code into the widget framework.

Fin.

Bug fixes
Promises...
Add convenience API
Add what's new doc
Clarify what's new doc
This, that, and the other thing
Another that = this
Log save state callback failures
Fix, only return views that are direct children of the cell
Add an event that fires before the notebook saves
Address @jasongrout 's review comments, take 2
Rebase fixes
Document set_state_callbacks and,
make load_state callback support promises.
Remove view.show
Updated comments to new style.
Added changes discussed with @jasongrout
Use once instead of on
Merge pull request #6789 from jdfreder/persistence2

Widget persistence API