Adding keyboard layout widget

Closes #337
PPA includes a Raring (13.04) version.

Closes #339
Version bump for saucy salamander

Also add howto for packaging so I don't forget how next time :-)
Remove TODO from debian docs
Merge branch 'master' into develop
Code formatting

Closes #332
Don't die on all exceptions

This is annoying, since most things are just stuff we haven't anticipated. Yes,
you can probably get into some unrecoverable states, but it's highly likely
you'll be able to save your work and exit gracefully, instead of just having
the WM crash hard.

Also, catch a BadDrawables, since they're products of the same race as
BadAccess and BadWindow.

Closes #340
Fix typo
Fix multiple matching for dynamic groups.

Initial problem:
    Qtile proceeded matching rules until the end.
Example:
    When matching weechat in a first group and xterm in a second one,
    weechat will be setup into the second group.

New behaviour:
    Qtile stops matching after first result.
Example:
    Weechat matchs the first group and the matching process stops.

Closes #342
added DF to widget.__init__
added disk free widget
Add a break_on_match parameter to Rule
Think in terms of dB instead of % for volume
Per-core CPU graphs

By passing core=0, core=1, etc parameters to the widget.

The default value (core="all") is still to show all cores
CPUGraph: Lag compensation

If the update interval is higher than what it should be, push the same
value several times to the graph to compensate this lag.

Every value shown by the cpu graph is actually an average since the last
lookup, so this actually gives nice average values!
Fix typo

Probably should remember what's passed into the constructor. Thanks @dequis for
always whining :-)
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