kustomize should support injecting the K8s restconfig. (#3588)
kustomize should support injecting the K8s restconfig. (#3588)

* To do this we define a setter interface that will allow the K8s client to
  be injected.

* We also move the initialization of the K8s clients out of GetPlatform and
  into a function initK8sClients that isn't called until we actually need
  the client (i.e. in apply)

  * This gives callers a chance to inject the RESTConfig

* Some minor cleanup of kustomize

  * Delete some unused code; like kustomize.Application

  * Make KfDef a member variable rather than embedding it; this is cleaner.

    * Not sure what the original impetus of embedding it was.
    * Making it a member variable makes it more obvious that we are passing
      around a pointer to the different KfApps that are all modifying the same
      KfDef; this is important because we want to use the KfDef.Spec/Status
      to pass information around.

* Replace kustomize.go's customize WriteConfigFile method with one in
  application_types

  * This ensures secrets are properly stripped out.

  * It also ensures consistency with respect to the filename used.

* Related to #2152 and GCP click to deploy; we need to inject the K8s client.
kubeflow/kubeflow,kubeflow/kubeflow,kubeflow/kubeflow,kubeflow/kubeflow,kubeflow/kubeflow,kubeflow/kubeflow