groupbox/tasklist: Better X/Y margin/padding settings

Paddings can now be specified as X and Y separately, and margins can be
specified as just "margin" too.

Specifying (margin|padding)_(x|y) overrides (margin|padding).

(Doing this because personally I like to set padding_x to be wider than
padding_y. It creates a nice effect with the background color)
Add PaddingMixin / MarginMixin / configurable.ExtraFallback

PaddingMixin and MarginMixin add configuration entries to widgets that
need padding and/or margin to be specified as horizontal, vertical or
both.

The (padding|margin)_(x|y) properties use a new class called
ExtraFallback that add another layer to the existing configuration
fallbacks (widget defaults, global defaults, user config) to lookup
another configuration entry, in this case, the corresponding
(padding|margin) value.

For example, looking up padding_x will try, in this order:
 - User config
 - Global defaults
 - Widget defaults
 - These three locations again, but for "padding"
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
Add Image widget

...why hasn't anyone written this before?

Closes #350
commands Client don't use config anymore

Closes #351
log errors in config files on restart
Fix oddity in default config

It only creates one Screen, so it shouldn't have toScreen hotkeys, since people
end up with stack traces in their logs.
Fix typo in docs
added support to set dynamic groups position(order)
Simplify group position a bit

Closes #352
Ensure the width of widgets is an integer

Particularly the image widget, since I'm derp. Returning floats breaks
other thigns subtly, like the systray widget. This fixes the image
widget, and also prevents other widgets from doing the same mistake.
Fix up gentoo documentation
Whoops... should've bumped this for 0.6
open 1st window after closing win in treeLayout

Closes #355
Closes #356
Move graph lag compensation to _graph.push method.
Include a lag limit to avoid issues following suspend.
Remove the lag, and make the lag_cycles visible to update_graph,
just in case we decide to make use of it.
Multiple inserts should not take too many cycles, thanks tych0.
Don't crash on exceptions from hooks
this_screen_border other_screen_border and urgent_border defined twice