RateTracker improvements

make RateTracker an interface
move implementation to BasicRateTracker
allow ClientBuilder to specify RateTracker