feat: implement abstract data source
Change so we track track and set a DataSource instead of a DataDevice
This means we have to reverse a connection:
-
we need to update Seat with our selection only when our selection is received by the DataDeviceInterface
-
we no longer need to track and watch a dataDevice for changes after the seat emits selectionChange
Change so that we handle an AbstractDataSource. Meaning we can paste from clipboard managers.