red_worker: cleanup red_clear_surface_drawables_from_pipes

(1) merge 'force' and 'wait_for_outgoing_item' to one parameter.
    'wait_for_outgoing_item' is a derivative of 'force'.
(2) move the call to red_wait_outgoing_item to red_clear_surface_drawables_from_pipe
red_channel: cleanup of red_channel_client blocking methods

(1) receive timeout as a parameter.
(2) add a return value and pass the handling
    of failures to the calling routine.
red_worker: disconnect the channel instead of shutdown in case of a blocking method failure

rhbz#1004443

The methods that trigger waitings on the client pipe require that
the waiting will succeed in order to continue, or otherwise, that
all the living pipe items will be released (e.g., when
we must destroy a surface, we need that all its related pipe items will
be released). Shutdown of the socket will eventually trigger
red_channel_client_disconnect (*), which will empty the pipe. However,
if the blocking method failed, we need to empty the pipe synchronously.
It is not safe(**) to call red_channel_client_disconnect from ChannelCbs
, but all the blocking calls in red_worker are done from callbacks that
are triggered from the device.
To summarize, calling red_channel_client_disconnect instead of calling
red_channel_client_shutdown will immediately release all the pipe items that are
held by the channel client (by calling red_channel_client_pipe_clear).
If red_clear_surface_drawables_from_pipe timeouts,
red_channel_client_disconnect will make sure that the surface we wish to
release is not referenced by any pipe-item.

(*) After a shutdown of a socket, we expect that later, when
red_peer_handle_incoming is called, it will encounter a socket
error and will call the channel's on_error callback which calls
red_channel_client_disconnect.

(**) I believe it was not safe before commit 2d2121a17038bc0 (before adding ref
count to ChannelClient). However, I think it might still be unsafe, because
red_channel_client_disconnect sets rcc->stream to NULL, and rcc->stream
may be referred later inside a red_channel_client method unsafely. So instead
of checking if (stream != NULL) after calling callbacks, we try to avoid
calling red_channel_client_disconnect from callbacks.
update spice-common
spicec: warn when throwing exception

This helps to identify the code location of exception
spicec: refresh the display after display resize
spicec: use standard opengl 3.0 framebuffer
spicec: fix non-doublebuffer drawing

First, context must set it, then Draw/ReadBuffer must be set to FRONT,
and then explicit Flush is needed.

This patch is mostly for future reference, it is mostly discarded in
following patch using double-buffer.
spicec: use doublebuffer for opengl

This visually reduces glitches without noticeable speed difference.

It's also the traditionnal way of doing opengl.
spicec: remove dead GL code
spicec: add SPICE_NOGRAB

Similar to spice-gtk, disable mouse and keyboard grab (useful when
running under a debugger)
spicec: do not abort if cache error
spicec: add sw canvas diff check

Setting CHECKDIFF=1 environment variable will compare the rendering of
the selected canvas with a software canvas. This is useful for debugging
some rendering issues, however it is far from being perfect, since it's
not able to tell whether one or the other is actually faulty. It's a
strong indication though of which operations are incorrect.

Ideally, all operations should be checked, however, a few of them are
disabled by default because they fail all the time, and it looks like
pixman is not very accurate for blending/compositing (at least visually,
it seems gl has better rendering)
spicec: use pre/post copy

Ensure the GL state is appropriate for calling GCanvas::copy_pixels.
spicec: disable stencil test with primary fbo

The primary buffer doesn't use stencil test. However, this should be
explicitely disabled, since the canvas might change stencil state, and
this will affect primary stencil buffer, making some of further update
operations clipped in unwanted ways.
server: remove unused fill_rects_clip

Unused since 62d0c076eb2eb0f9954c3870f31b4dd685e5f95c.
cleanup: remove GITVERSION

This file is unneeded since d986fb46
server: remove memslot unused functions
Update spice-common
server: set dispatcher before calling attache_worker

This allows to call spice_qxl_add_memslot during attache_worker(), like
done in the tests.