Adding a User-Agent header for the SDK

This means every time the user calls getClientInfo(), we'll override the SDK version with config.getSdkVersion(). If we want to enforce the SDK version, I think we'd be better off creating a constructor in ClientInfo, getting rid of setSdkVersion(), and having SDK version be immutable (final).

If we want to allow SDK users to override the SDK version (which seems unlikely), we'd be better off moving the info.setSdkVersion() into a static initalizer.

For example:
private static final ClientInfo CLIENT_INFO = new ClientInfo();
{
  info.setSdkVersion(config.getSdkVersion);
}

or some variant thereof.