vdsm: Try to reconnect on vmchannel after errors

Currently the vm channel listener is not handling any errors. If an error
occurred we would not try to reconnect and the connection to the guest is lost
for the lifetime of the guest or until VDSM gets restarted.

To handle this situation this patch introduces a mechanism to reconnect to the
channel. Once an error occurred the setup callback is called, which gives the
handled client the chance to recreate the socket and prepare it for a connect.
After that callback was called, the errornous connection will be moved into the
unconnected items dict where it will be handled by the event loop.

If there have been 5 or more unsuccessful attempts made the reconnect rate will
be slowed down to the same time as specified for the 'read timeout'.
The items which are slowed down are moved into the 'reconnect_cooldown' dict.

Change-Id: I8b9b9418e39558d45c97e9545bc9ecc4935f004e
Bug-Url: https://bugzilla.redhat.com/871616
Signed-off-by: Vinzenz Feenstra <vfeenstr@redhat.com>
Reviewed-on: http://gerrit.ovirt.org/11977
Reviewed-by: Dan Kenigsberg <danken@redhat.com>