Be able to change the window during playback

For that, we delay every setup operation just before the rendering
process. Also, we now support the ability to request a window every
time a new frame is going to be rendered and the sink does not have
a window set yet.
We need to use a recursive mutex because the setting of a window
might come from the rendering thread but also from the user application.