Add persistent client properties

`client.property.persist` can be used to make properties persistent
across restarts. This works by backing them up via X properties (using
the `awful.client.property.` prefix).

`client.property.persist(c, "floating", "boolean")` is used to make the
floating property persistent by default.

Based on a patch from Uli, source: https://gist.github.com/psychon/10320743

doc, only set current prop in 'persist'

Fix xprop/prop mixup in 'persist'

Only call set for non-nil values
Call AllowEvents after grabbed events on a drawin

When we get an event due to a previous GrabButtons call, we have to continue
normal event processing again, because the server froze the input device for us.
Without this, everything appears to freeze.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Merge remote-tracking branch 'blueyed/remember-layout-across-restarts'
Remove unused argument to awful.client.property.persist

This is a left-over from an old version of the patch which introduced this new
function.

Signed-off-by: Uli Schlachter <psychon@znc.in>
awful.util.geticonpath: Correctly localize variables

This function was accidentally setting the global variable "icontypes". Fix this
by adding the needed "local" and also localize some more variables for
consistency.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Fix check against clients in taglist.
systray: added definable icon spacing

Default is 0. Customized by adding theme.systray_icon_spacing
directive in theme.
systray: Small consistency fixes

Use lua's *integer instead of *number functions, because we are dealing with
integers. That is, "numbers which do not have a fractional part".

Also some minor fixup for some comments.

Signed-off-by: Uli Schlachter <psychon@znc.in>
wibox.widget.systray: Special case the empty systray

Otherwise we could end up with negative size for the systray.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Merge branch 'fix-clients-length' of https://github.com/tail/awesome
gears.wallpaper: Center maximized if no offset set

maximized() used to align the image with (0,0) so that it is shifted to the right or bottom. Most wallpapers are designed from the center, so this behavior is not desired usually. With this commit the wallpaper is centered when no offset is set. To get the old behavior use {x=0, y=0} for the offset parameter.
FS#1278 - Menubar should check all standard directories
Added local desktop directory to list of directories parsed by menubar
by using the XDG specification
cmake: Remove useless program checks

We were looking for programs called cat, ln, grep and lua, but didn't ever use
the result of any of these searches. So let's just not search at all.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Fix for FS#1293

FS#1293 - Systray won't show with margin layout

https://awesome.naquadah.org/bugs/index.php?do=details&task_id=1293&project=1&order=dateopened&sort=desc
wbox: Make :find_widgets() easily accessible

Signed-off-by: Uli Schlachter <psychon@znc.in>
Merge branch 'master' of git://github.com/memeplex/awesome
systray: Only intern the atom once

Let's just save the systray atom and keep it around. Why should we redo this
every time this atom is needed?

Signed-off-by: Uli Schlachter <psychon@znc.in>
systray: Only register/unregister when needed

Signed-off-by: Uli Schlachter <psychon@znc.in>
Add a lost comment to CMakeLists.txt

Signed-off-by: Uli Schlachter <psychon@znc.in>
Add unit tests

This uses busted (http://olivinelabs.com/busted/) to implement unit testing.
This is wired up to "make check" and/or "make test".

This commit also adds tests for the more complicated parts of the gears and
wibox.layout libraries.

Signed-off-by: Uli Schlachter <psychon@znc.in>