renderer: no need to check HasFreeBuffer in FlipPage() it is too late

The player should already have checked HasFreeBuffer() before getting here
renderer: add GetNextDecodeBufferIndex() instead of HasFreeBuffer()
renderer: WaitForBuffer() must always calculate buffer level
renderer: make sure configure waits for the entire queue before starting
renderer: add PRESENT_READY instead of doing work in IDLE state

This signifies that there are available queued up frames to be
presented at some point in the future
renderer: don't depend on GetFPS() for frame selection

This has little benfit and it's better to select the right
frame directly.
renderer: skip frames if a new already late frame exist

This allow player to render at higher speed than output can display,
ie 60fps video on 30hz display.
renderer: buffers are free when we flipped in a new buffer, not before

We must always have a frame ready to render even when fullscreen
so we can not release buffers on flip. It should be done when
there is something new available
renderer: calculate all buffers displayed based on having been rendered

Calling for example glSwapBuffer() does in no way guarantee that the
all rendered resources are free to replace. So we have no benefit
from doing this after flip instead of after render