viewer: Disable GTK double buffering to prevent flickering and black images

Fixes bug #708088 (viewer image sometimes disappears/becomes black)
Fixes bug #596954 (flickering and black image while resizing the previewer)

Also hide the internal ViewerWidget at startup until a pipeline is set,
to prevent the user's wallpaper from showing up through the viewer.
viewer: set ViewerWidget's "sink" var on pipeline change

This variable was pretty much never set to anything other than None,
and we were somehow relying on it not being None...
viewer: Use the "realize" GTK callback to asynchronously obtain window handle

This eliminates some race conditions resulting from the use of GstVideoOverlay.
Namely, this allows docking the viewer correctly if it was undocked on startup.

Note the new style of getting win32 handle.