separate retry logic into manager class

separate retry logic into manager class ExponentialBackoffMsgRetryManagerTest
fixed logic with regards to TOPOLOGY_MESSAGE_TIMEOUT_SECS (this is not a max
    time across retries, but rather a max time within a retry - so there is
    no conflict and no need to account for it in the retry logic).
tests for ExponentialBackoffMsgRetryManagerTest