Refactor the videorate element to properly separate upstream and downstream time domains when the `rate` property is set. The previous implementation had issues with time domain conversions when changing rates, especially during seeks after which we were basically confusing input and output timestamps. This also fixes rate changes as we are now tracking the wanted input timestamps and not confusing them with the output, so this way we do not drop buffers when the rate is changed while playing, meaning that the related tests have been fixed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9013>