Play closer to the end of the video.

Refs #6974.  When the end of the recording is reached, don't exit the
player immediately.  Instead, pause playback and let exiting be
handled by either the end-of-playback timer event or the
end-of-recording-delete-prompt timer event.  This removes IsNearEnd()
from end-of-playback consideration, as well as the randomness of where
in the 250ms window the timer events fire.

IsNearEnd() is still used in other places (e.g. to control playback
speed and bookmarking behavior near the end of a recording).  The
IsNearEnd() calculation is changed to depend on the number of frames
played by the player rather than the number of frames read by the
decoder thread, making IsNearEnd() more predictable and reliable.

Note that this does not address the original issue in #6974, which
involves allowing the accumulated decoded frames to be displayed after
the decoder reaches EOF.