Port WheelEvent away from QWheelEvent
QInputEvent doesn't behave as we expected, if two input events are created (it's pretty common when kwin needs to forward an event to a decoration, etc), the last event can change the values in the first event even though they are completely unrelated, which later breaks input processing in kwin.