Client retries if connection is not healthy(meaning its heartbeat is tim...

...ed out). ClientCallFuture does not return null when timeout, rethrows the exception.

fixes #2593 
It is hard to test. We need a node that is not responding to requests after a successful join. We may use our TestHazelcastInstanceFactory to simulate this behavior.  But even than, it will only be possible among the nodes. And this change is for clients. If we implement this, it could be a good addition for unit tests.
 I wonder if it is possible to test this with stabilizer. I remember, @pveentjer was mentioning such a feature, but I am not sure if it is currently available.