Frame clock consumers
This changes the frame clock users to "consume" events instead of actively freezing the clock. What it means is that each surface, when updates are not frozen, notifies the frame clock that it wants to consume ticks. When a frame clock has one or more consumers, it is active. If all consumers are removed (e.g. all surfaces using it have their updates frozen), then the frame clock is frozen.
This is currently somewhat lazily done. The frame clock itself is controlled internally via "freezing" and "thawing", but the API used by the rest of Gdk uses
dec_consumer(). On construction, the frameclock freezes itself, as there are no consumers at construction.
This MR also reverts the toplevel-drives-children change, so that the toplevel can be frozen, but popups still be rendered.
While at it, it also adds back the
testpopupat. Let me know if it should be split out.