Introduce surface role post commit hook
Currently, the surface role state is not applied atomically together with the surface state. For the most part, it's not a big deal. But if the compositor re-creates its private data for unmapped surfaces, there might be minor issues caused by using outdated data. In the long run, the plan is to remove the XdgToplevelInterface::resetOccurred() signal and simply re-create the corresponding instance of XdgToplevelClient when the underlying surface object emits the unmapped() signal.