sync: connection recovery cache (with tests) added

libmongo-client dropped these information when a connection
closed (disconnect() ). This can lead to a re-connect failure problem (reload),
if the master, at the moment of disconnect(), is not listed in the application's
config. So we have to store it (and also authentication credentials...) .

This patch adds a recovery cache to each mongo_sync_connection object.
A recovery cache stores a ReplicaSet and an AuthCredentials object.

More techinally:
There is a pointer inside mongo_sync_connection object which references
such a cache. If the cache is not set, everything is just happen as before.
When the cache is set, ReplicaSet and AuthCredentials will be reused by the
next mongo_sync_connection (eg. after reload). When the seed list is changed,
the user should discard the cache.

Signed-off-by: Budai Laszlo <lbudai@balabit.hu>