Handle WM_CLASS changes

http://tronche.com/gui/x/icccm/sec-4.html

> The WM_CLASS property (of type STRING without control characters)
> contains two consecutive null-terminated strings. These specify the
> Instance and Class names to be used by both the client and the window
> manager for looking up resources for the application or as identifying
> information.

i3 processes changes to WM_CLASS by updating the cached property and
running assignments. This allows the property to be used in criteria
selection.

fixes #1052
Bugfix: properly restore workspace containers (Thanks vals)

fixes #1306
Merge branch 'master' into next
Merge branch 'fix-layout-output'
don’t set names corresponding to debug colors, remove “sleep 1”.

The names were (mostly) internal to i3 anyway.

Hopefully this doesn’t break anything, but I really think this old
behavior needs to go now :).
Remove TODO for cycling through the floating z-index.

I think this is not a good feature to have. It shouldn’t be necessary
for a tiling window manager that explicitly discourages the use of
floating windows.

fixes #1324
Bugfix: missed case for decoration rerender

Rerender the decoration when the container requires a pixmap and does
not have one.

fixes #1292
Merge branch 'master' into next
Merge branch 'fix-decoration'
Bugfix: add a sync call to i3bar to confirm reparents before exiting

Without this call, sometimes the tray icon windows are reparented into
i3’s container around the i3bar window, i.e. into the next remaining
window in the window hierarchy. Since i3 then closes that container
(since the i3bar window itself was closed), the tray window will also
get closed. In general, this weird interaction (getting reparented and
then closed) is not well received by tray icon providers :).

closes: #1296
Merge branch 'master' into next
Merge branch 'fix-tray-restart'
make AnyEvent::I3 dependency versioned (Thanks sur5r)
Raise floating windows on `focus [direction]`

Raise a window when cycling focus between floating windows with `focus
[direction]` command so that newly focused windows are rendered on top
of other windows.

This is done by placing the window last in the floating nodes of the
parent and reordering the stack so the relative order is preserved.

fixes #1322
t/*ewmh*: fix flakiness by syncing
Bugfix: don’t set focus in con_set_layout() on invisible workspaces

fixes #1338
Merge branch 'fix-layout-focus'
Merge branch 'master' into next
retina support: convert logical to physical pixels for default_border_width
Align lower line of bar decoration to border width

In normal border style, two horizontal lines are drawn to outline the
bar decoration. The lower line leaves a gap to the left and right to
align with the border. This gap was hardcoded to 2 pixels. Now it
matches the current border width, if any.

In stacked layout, only the bottommost bar is aligned. In tabbed layout,
no gaps are left in order to close the outline and make the notion of a
tab more clear.