the primary_selection_source_destroy list points to memory freed by that cancel callback, so remove from list before freeing
This lets clients bind to a seat multiple times by re-using the existing wlr_seat_client whenever a duplicate request happens. Previously, an independant wlr_seat_client would be created and only events from one would be processed. Fixes #1023.