clutter: Deliver events sooner when possible.

Previously all events would be queued and their processing deferred till
the next master clock tick, at which point supersesed input events would
be dropped and only the latest of each type used. This was great for
minimizing CPU usage but had two drawbacks:

 * Clients would receive the next input event after it is already too
   late to make it to the next compositor frame.
 * Clients would receive a lower resolution event stream than the hardware
   is capable of.

We now instead scale performance dynamically according to available time.
If there is enough idle time available then that will be used to deliver
events immediately without delay. Otherwise event delivery will scale down
to the old minimal-CPU behaviour.

This allows clients to receive input events sufficiently in advance of the
next compositor frame that they can respond and redraw with one frame
lower latency than before. It also allows clients higher resolution input,
in case they are able to use it.

GNOME/mutter!168
6 jobs for !168 with remove-input-lag in 18 minutes and 21 seconds (queued for 2 seconds)
detached
Status Job ID Name Coverage
  Review
passed #793432
check-commit-log

00:00:22

 
  Build
passed #793433
build-mutter

00:03:15

passed #793435
build-without-native-backend-and-wayland

00:02:38

passed #793434
build-without-opengl-and-glx

00:12:54

 
  Test
passed #793437
can-build-gnome-shell

00:02:44

passed #793436
test-mutter

00:05:04