Clean up the client library.

This makes changes to ensure that connections are reused as much as
possible by the net/http.Client library, and also updates the user-agent
header to be more descriptive of what is actually running. This also
makes it possible to select which cluster you want to use the client
against, and allows more specific tuning of the HTTP client library by
users via exposing it to them directly.