text: Title: client-go prints a klog warning by default in library code which is not allowed
  Body: **What happened**:
  
  A code change was merged that used `klog.Warningf` in library code by default (`NewDefaultClientLoadingRules` changed in a way that impacted all code in the world which uses that default, which is pretty common), which is not allowed by convention in Kube because client libraries may be used in UIs that wish to control output (klog is not consistent with other output).  The code change should have had a callback that allowed clients to optionally decide to print, not print to Warningf by default.
  
  https://github.com/kubernetes/kubernetes/pull/78185#issuecomment-685765692
  
  We should also document the convention for other reviewers that logging by default in client libraries is disallowed.
  
  For instance, a callback would have allowed kubectl to print a human readable message `warning: KUBECONFIG does not exist` in general, and in specific cases (like `kubectl config` or login flows where KUBECONFIG not existing is totally reasonable) not print a message.
  
  **Anything else we need to know?**:
  
  **Environment**:
  - Kubernetes version (use `kubectl version`):
  - Cloud provider or hardware configuration:
  - OS (e.g: `cat /etc/os-release`):
  - Kernel (e.g. `uname -a`):
  - Install tools:
  - Network plugin and version (if this is a network-related bug):
  - Others:
  