Refactor DriverClient to be more Actor-based

This also addresses my comments. PTAL.