simplify the internal StackWidget implementation

This makes the selected value widget based instead of index based. This
leads to a much cleaner internal implementation.
do not allow switching to widgets which are not children
code cleanup
update CSS names
code organization
update comment
add a TabWidget

this combines a TabBar and StackWidget into an easy-to-use Container