Add many signals to VirtViewerDisplay which are emitted when various
events occur. This lets us remove all the code in the VirtViewerDisplay
subclasses which call back into VirtViewer methods. Instead VirtViewer
can simply connect signals to the display
To use the GtkAlignment we have to play evil tricks overriding
its size request, to make it reallocate the child to the preferred
size we desire based on the virtual desktop size + zoom level.
By replacing the GtkAlignment with a custom widget we can
directly implement the layout/sizing semantics we want without
playing stupid games