Only scroll the grid to the active line if the row has actually changed

Makes it so that undo/redo only scrolls to the active line if it's
different in the two versions of the file.
Speed up AsyncVideoProvider::UpdateSubtitles a bit

Adding Row to AssDialogue removes the need to loop over the file to find
out what rows changed.
Reuse buffers for video frames

At least on OS X, allocating the buffers is one of the more expensive
parts of video playback, and on an arbitrary 720p H.264 file with simple
subtitles this cuts CPU usage while playing by about 30%.
Only repaint the video slider on seek if the thumb will actually move

Cuts CPU usage for playback in totally arbitrary circumstances by about
5%.
Avoid pointless repaints of the grid when seeking video

Keep track of which lines are displayed on the current video frame so
that video seeks only have to repaint the grid when the set actually
changes. Speeds up video playback on non-fbf stuff by ~15%.