For details on the protocol see the Wayland merge request.
For us what matters is basically: we rely on
wl_pointer.axis_v120 and prefer those events where available. This automatically covers non-wheel events with the existing code paths since they'll never get a v120 event. The only special case is where we get a v120 with a zero value, it indicates the current frame is a legacy-only frame and we can discard the information.
WIP because we need to line up all the pieces everywhere but there's a Fedora 32 COPR for testing.