* Move utils packages that are required for gitops engine under engine/pkg/utils package.
Following changes were implemented:
* util/health package is split into two parts: resource health assessement & resource health assessement and moved into engine/pkg/utils
* utils packages moved: Closer and Close method of util package moved into engine/pkg/utils/io package
* packages diff, errors, exec, json, kube and tracing moved into engine/pkg/utils
* Move single cluster caching into engine/kube/cache package
* move sync functionality to engine/kube/sync package
* remove dependency on metrics package from engine/pkg/utils/kube/cache
* move annotation label definitions into engine/pkg/utils/kube/sync
* make sure engine/pkg has no dependencies on other argo-cd packages
* allow importing engine as a go module
* implement a high-level interface that might be consumed by flux
* fix deadlock caused by cluster cache event handler
* ClusterCache should return error if requested group kind not found
* remove obsolete tests
* apply reviewer notes
* Make injected application instance label configurable from default
Stop removing ksonnet.io/component label, unless using legacy label
* Fix applying of resources when namespace is empty
Update dependencies to k8s v1.12 and client-go v9.0 (resolves#353)
Fix issue where applications could not be deleted on k8s v1.12 (resolves#718)
Refactor k8s dynamic resource libraries to promote code reuse
* Add ksonnet version to version endpoint
I needed to move config.go out of the cli package to fix a circular dependency.
* Remove ksonnetVersion field from the ArgoCD version struct
* Refactor local ~/.argocd/config to be similar to kube configs
* `argo login` will detect TLS issues and prompt user before writing config
* version server is unauthenticated and `argo version` will report server version