Add buffering to video renderers

This replaces: https://github.com/xbmc/xbmc/pull/2309

It implements a render queue in the renderers allowing main thread to continue rendering more frames while we are decoding. This should reduce the likelihood of stuttering due to high cpu load.

The default queue size is 3. Thus 1 additional frames. This is likely a candidate for advanced settings since it will allocate full pictures frames in memory during playback. This could be increased on systems that have enough memory.

The queue will always select the last decoded frame that has a present time that has passed. This mean it will potentially drop frames at output stage. This has the added benefit of us finally being able to play 50fps video's on 30hz displays and 60fps video's on 50hz displays without causing total audio desync.