WIP - Refactor the client (again) to better support auth

Allows consumers to provide their own transports for common cases.