refactor ReconnectionManager as interface, allow ClientBuilder to specify reconnectionManager.

I thought RateTracker would be enough, but I need to change the ReconnetionManager logic also to be able to specify a backfill count when restarting a process for zero data loss.