Expand the semantics of the widget visible attribute to allow for visibility: hidden

Now, visible can have three values:
  * True - show the widget
  * False - hide the widget, but collapse the empty space (css `display: none`)
  * None - hide the widget and show the empty space  (css `visibility: hidden`)