server/reds: allow call to reds_agent_remove even if it is gone
server/reds: allow call to reds_agent_remove even if it is gone

The current assert(reds->agent_state.connected) tiggers if when
the agent disconnected there was still data waiting to be sent (for
instance if there is a bug in the client handling clipboard and it
is killed while a large clipboard transfer is in progress). So first
call to reds_agent_remove happens from spice_server_char_device_remove_interface,
and then it is called again (triggering the assert) from free_item_data
from read_from_vdi_port because of the channel destruction.

Other option would be to not call it from one of the paths - but that
is suboptimal:
 * if there is no data in the pipe, the second call never happens.
 * the second call has to be there anyway, because it may fail during
  parsing data from the agent.

This patch fixes a segfault on this assert when a client starts passing
from guest agent to client a large clipboard and dies in the middle. There
is still another assert happening occasionally at marshaller which I don't
have a fix for (but it doesn't seem to be related).

fgouget/spice,dezelin/spice,mathslinux/spice,ya-mouse/spice,mathslinux/spice,alon/spice-server,alon/spice-server,freedesktop-unofficial-mirror/spice__spice,mathslinux/spice,mathslinux/spice,dezelin/spice,alon/spice-server,ya-mouse/spice,SPICE/spice,alon/spice-server,elmarco/spice,mathslinux/spice,freedesktop-unofficial-mirror/spice__spice,elmarco/spice,freedesktop-unofficial-mirror/spice__spice,ya-mouse/spice,Fantu/spice,fgouget/spice,SPICE/spice,alon/spice-server,dezelin/spice,fgouget/spice,elmarco/spice,elmarco/spice,Fantu/spice,SPICE/spice,dezelin/spice,Fantu/spice,fgouget/spice,freedesktop-unofficial-mirror/spice__spice,Fantu/spice,dezelin/spice,freedesktop-unofficial-mirror/spice__spice,elmarco/spice