Properly handle async xdg-decoration mode updates
This change adds necessary APIs to properly handle asynchronous decoration mode updates.
With the proposed design, when the preferred mode changes, the compositor schedules an xdg decoration configure event by calling the XdgToplevelDecorationV1Interface::sendConfigure() method, no decoration is created or destroyed yet. The configure event will be actually sent the next time XdgToplevelInterface::sendConfigure() is called. The compositor has to check XdgToplevelDecorationV1Interface::mode() in the surface commit handler and create or destroy a decoration as needed.
Edited by Vlad Zahorodnii