Automatically open a comm on creation of widgets

This will immediately create a model on the javascript side when a widget is created.  This means that, for example, a widget that only interacts with its model can work without "displaying" it.
Don't register comm with comm_manager if comm_manager is undefined
Check for null session in _publish_msg and _session)default
Make the widget comm attribute more straigtforward

Instead of automagically instantiating a comm when it is accessed, require a call to open().  This makes the comm attribute much less magical, and hopefully more understandable.
allowing widet id to be set externally
Merge pull request #6194 from SylvainCorlay/immediate-widget-comm

Allow model id to be set externally on creation of the widget.