Add None as a widget visible value to allow for visiblity: hidden

Now, visible can have three values:
  * True - show the widget
  * False - hide the widget and collapse the empty space
  * None - hide the widget and show the empty space
Merge pull request #7097 from jasongrout/widget-visibility

Expand the semantics of the widget visible attribute to allow for visibility: hidden
Another widget promise bug fix
Fix persistence API
Fix persistence API,
it expecited a view dictionary not a dictionary of view promises