CPP-147 - DC-aware LBP

DC aware LBP and other improvements

This PR contains changes merged from CPP-146 feature branch. If looking before CPP-146 is merged to beta4, reviewer may choose to compare CPP-147 from CPP-146 to get a better idea of what's changing.