Fixed sub_widgets and changed widget handling

Fixed the bug where sub_widgets would not be creatable, because their
init_action was not set.
Also, for every widget, there is now one instance of the widget provider
class.
Previously there was one instance for every widget for that provider,
but it makes much more sense the new way.