Reimplement popups
This branch contains
- a GtkNative interface for surface-bearing widgets
- a rewrite of popovers as GtkNative
- removal of child surfaces
- introduction of a popup surface type
- implementation of popup surfaces for Wayland, X11 and Broadway
- event propagation tweaks for GtkNative