awful.tag.update: Fix identical tag set detection

If the "current" table is empty, then identical always true.
There is a lot of case where this can happen. Mostly when using
dynamic tagging.
layouts: Allow layouts to be invoked with fake data

This patch allows 2 things to be done:

* Write unit test to validate layouts using fake clients and tags
* Query the current layout geometry from another tag

The advantages of the former are clear and simple. Those of the later include:

* Creating a screenshot of another layout
* Display the layout wireframe in the tag list (like KDE2-3, Gnome2)
* Having and 'ALT-tab' like visual popup for tags
Add awful.tag.swap
tag.delete: Do not reset client tag when unnecessary
gears.color spec: Don't depend on order of pairs() (FS#1301)

The previous code assumed that pairs() iterates over the table in a specific
order which is not a safe assumption.

Signed-off-by: Uli Schlachter <psychon@znc.in>
Merge branch 'fix_tag_history_V2' of git://github.com/Elv13/awesome-1
Merge branch 'tag_swap_V2' of git://github.com/Elv13/awesome-1
Merge branch 'layout_unit_testability_V2' of git://github.com/Elv13/awesome-1
Merge branch 'fix_tag_remove_v1' of git://github.com/Elv13/awesome-1
Add signals for titlebar resizes (FS#1233)

Signed-off-by: Uli Schlachter <psychon@znc.in>
Merge branch 'master' of http://git.naquadah.org/git/awesome into local