All widgets that poll state use a common interface

There are two kinds of polling: polling that takes a long time (e.g.
yahoo_weather, bitcoin_ticker, etc.) and polling that doesn't (e.g. local
filesystem polling). You really don't want to have to think about which widget
does which kind of polling, you just want to write your widget logic. This
commit makes that a reality.