Closed #57 Closed #56

added fan widget
abstracted out base widget
changed the method by which the widgets and the toggle fragment
register themselves to the toggle task. It is now much faster and no
duplicates occur.

I realize I did not properly understand how widgets worked, as they
don’t follow the same lifecycle. To this end, the widgets will now not
work when sparky is shut down. This can be fixed in the future but for
now I show a popup.
Merge branch 'widget-rework'