Move drag logic to seat and introduce SeatInterface::startDrag
A DataDevice has a request to start a drag with multiple parameters. As kwayland's goal is to turn an event-driven API into a property cache API we store this data. This patch moves that storage to the Seat as properties of the active drag, rather than a property of the data device that happened to initialise it.
This both helps keep a lot of other logic together, but also allows us to expose a public startDrag method that can be invoked from Kwin's internal surfaces or xwayland.
Any properties in DataDevice now relate to data being dropped on the device.
Introduce AbstractDropHandler
This abstract class represents an object that receives drag and drop events. This roughly maps to some of DataDevice's receiving methods, but by being abstract also allows us to use the same code from xwayland in a manner transparent to all code paths.
Preivous xwayland support with "proxy surfaces" have been removed.
In future it will be extended to have the mouse move events, so that we can avoid spying on the seat both in dataDevice and kwin's internal filter
Requires matching MR in kwin.