Remove 11 heavy includes from Document.h that were only needed for
pointer/reference types (already forward-declared in Forward.h), and
extract the nested ViewportClient interface to a standalone header.
This reduces Document.h's recompilation cascade from ~1228 files to
~717 files (42% reduction). Headers like BrowsingContext.h that were
previously transitively included see even larger improvements (from
~1228 down to ~73 dependents).
We fire a single shot timer to wait for the rumble to complete, so we
can call on_complete. SDL keeps an internal account of how long the
rumble should take and might, at that point, still be convinced the
gamepad should rumble. To prevent this race condition, explicitly cancel
the rumble ourselves.
Hopefully fixes the flakiness of
`Tests/LibWeb/Text/input/GamepadAPI/gamepad-rumble.html`.