3866: PySDK KeepClient accommodates services with IPv6 addresses.

I thought there was going to be a nicer way to construct URLs than
this, but urllib.urlunparse is still expecting the host+port as a
single string, so this approach is easier.  Closes #3866.