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"
Add Image widget

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