wlr_scene: Refactor presentation events

First two commits from !4015

breaking because the buffer output_present event will now be handed a wlr_output_event_present instead of a wlr_scene_buffer.

Fixes a rare case where multiple presentation could be sent during a output commit during a failed attempt to direct scan out. This simplifies anybody who wants to use wlr_scene_buffer.events.output_present because they no longer need to buffer the event themselves.

Merge request reports