Moved event propagation to widget code + minor fixes

  - Widget event injection code can now do the event propagation
  - Changing widget visibillity causes a redraw
  - The state change callback on visibillity change is also called on
    children
  - Adding or removing children only causes a redraw
  - Added function to determine whether a widget is visible, taking
    parent visibility into accout
  - Moving widgets, changing children hirarchy, etc only caueses a
    redraw if the widget in question is visible
  - Added missing sanity checks
Simplified & improved tab group widget, fixed subview positioning

  - Tab group uses dummy widget to group children
    -> greatly simplifies code
    -> children position relative to tab area, ignoring tab caption
  - Use absolute position to adjust subview window position correctly
  - Use absolute visibillity for subview window

  - Fixed canvas widget from point (take visibility into account)