- add new commit() function to view->impl table
- add view_set_surface() which encapsulates:
- setting view->surface
- connecting/disconnecting map, unmap, and commit handlers
For xwayland, view_set_surface() is called from associate/dissociate()
handlers. This means that view->surface is now set slightly earlier,
in associate() rather than map().
It's no longer necessary to have two separate cleanup paths depending
on whether the wlr_surface or wlr_xwayland_surface is destroyed first,
because wlroots calls dissociate() beforehand in either case.
Also, view->content_tree is now destroyed and set to NULL at unmap.
Previously, we relied on wlr_scene to destroy it automatically when
the surface was destroyed, but kept a potentially dangling pointer in
view->content_tree until next map. Similar change for unmanaged.
v2: add assert
v3: synthesize dissociate in set_override_redirect
v4: rework scene node lifetimes
v5: reduce asserts