upgrade TabWidget to a LayoutBreak

In the vast majority of use cases, the tab widget size is determined by
its ancestors. This changes TabWidget to inherit from LayoutBreak
instead of container, so that the reflow caused by switching tabs is
arrested at the TabWidget level.

For the minority cases where the size of the widget should be determined
by the visible widget, the user can create their own custom widget from
a TabBar and StackWidget.