introducing WidgetBase class so the main widgets can inherit from it

introducing WidgetBaseWithHeader as ancestor for widgets. It gives
header and toolbar and handles the widget body scrolling for itself so
that the header is always visible in the parent container of the widget