Bar draw queue: only draw the bar when idle

bar.draw() now doesn't do the actual drawing, but calls gobject.idle_add
to call bar._actual_draw() later, when the glib mainloop is 'idle',
which is generally the next X event loop iteration.

In my setup this saves 43 calls to draw(), which makes it feel much
faster. It turns out that we do a lot of draws everywhere, so this is a
tiny hack that could improve the CPU usage significantly in some
situations.
Set initial widget sizes on bar _configure()

With the Bar queue fix in cde3ed395, it is possible for a widget to ask to
draw() itself before the bar has drawn the first time (e.g. if someone does a
direct add to the event loop queue or sets a short timeout [graph widget]). I
consider the offset/width to be part of a widget's configuration, and thus they
should really be set in _configure() anyway, so we do that here, avoiding the
potential race.

Closes #347