keep widget list around unless profile has changed

Each time the netctl profile was checked, the existing widget list was
destroyed. This meant that widgets refreshed on an interval would lose
their state, so if netctl check interval < widget refresh interval, the
widget would be refreshed on the netctl check interval instead. This fix
keeps the widget list around unless the netctl profile has actually
changed.
refactor widget themes

Theming has been moved into a base Widget class that all widgets now
extend.