widget:  create an executor based text box

Text box that can wrap calling blocking functions which on return will
provide updated text.  This uses the default eventloop executor to wrap
the functions within a coroutine.
mpdwidget:  use ThreadPoolText

Rather that updating at some set interval, use the mpd idle function to
wait for new events to occur and then update the widget text.  Use the
ThreadPoolText class in order to wrap the idle wait inside of a
coroutine.

Also other minor pep8 related cleanup.