Fix stacking issues in Workspace::lowerWindow()
This MR fixes issues in Workspace::lowerWindow() method when dealing with window hierarchies.
Currently, on wayland only the window that was picked by the user is lowered (ignoring any possible children or parents), which leads to the following:
- when this window is a parent of a hierarchy then it goes down but leaves rest of hierarchy at current position in the stack
- when this window is a transient - it only gets lowered as low as possible - so it ends right above its parent in the hierarchy; other windows in the hierarchy are left intact; this often means that nothing actually happens. X11 version has its own set of issues as well, see BUG: 478382 (wayland BUG: 478383).
First commit adds tests. Second commit unifies code paths for X11 and wayland as well as fixes bugs (all windows in hierarchy get lowered, their relative order is retained).