Move the four egress reconcilers into k8s-operator/reconciler/egress,
following the earlier ProxyClass, DNSConfig, nameserver and Recorder moves.
They register themselves, so operator.go now builds every packaged
reconciler into a reconciler.Reconciler slice and registers them in a loop.
Hoist the helpers they shared with the rest of the operator: the Service
annotations, validation and cluster domain lookup into reconciler, and
pgReplicas into ProxyGroupReplicas. The per-CRD condition helpers move to
reconciler too, on a shared SetCondition, and the ones only used by their
own reconciler become unexported there. Unused condition helpers are
deleted.
This takes package kube down to the contract it shares with containerboot
and k8s-nameserver, which no longer link controller-runtime; containerboot
drops from 25MB to 15MB and k8s-nameserver from 20MB to 9MB.
Updates tailscale/corp#46764
Signed-off-by: David Bond <davidsbond93@gmail.com>