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
Another widget promise bug fix
Fix persistence API,
it expecited a view dictionary not a dictionary of view promises