Push preroll frames downstream following a seek request


A seek works by locating the keyframe with the largest timestamp equal or less than the requested time. Right now, we simply go that point and play from there. However, if there is a large difference between the requested time and the previous keyframe, then seeking doesn't behave as expected. (If the difference is small, you don't notice.)
Following a seek request, we should seek back to the previous keyframe, and then immediately push preroll frames downstream until we reach the requested time.