- connect/disconnect map handlers in set_surface()
- call set_surface() at time of associate/dissociate
This separates the concepts of "associate" and "map" more clearly.
It's no longer necessary to listen for wlr_surface "destroy" event,
because dissociate is always received first.
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.