switch to a multithreaded model

* Widgets are now their own thread.
* Widgets must override run with their own logic to update self.output
* A widget that breaks will no longer result in a frozen status line
  (just a frozen widget)
* This will break backwards compatibility with all existing widgets,
  unfortunately, but this is going to make things cleaner going forward.
mpdstatus: use idle to be more bandwidth-efficient