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>
Add new request::urgent signal

This fix two things:

(1) Clients asking to be urgent while focussed, this have been reported
a few time for urxvt and I usually link a patch that fix this. This may
not be considered a bug by some, but I think it is.

(2) Add the ability to stop noisy clients from setting the urgent state
themselves.
Add ewmh.urgent callback to use with request::urgent
Add 'urgent' property to tags
Use tag urgent::property instead of looping every clients in awful.widgets.taglist