curator: provisions for implementing multiple gRPC services

We want to run some other gRPC services on the Curator leader/follower
implementations other than just the Curator gRPC service.

This decouples the local types from implementing a particular gRPC
service (instead proxying through an interface) and splits out the
implementation of the Curator gRPC service from the main leader objects.

This should allow us to add an implementation of eg. a Management gRPC
service in a testable manner (the only thing we have to dependency
inject is the leadership struct, and that's trivial to do with a simple
etcd test server).

Change-Id: Ia0ea65e40a775bf49661d0b99c0185aa83547ed0
Reviewed-on: https://review.monogon.dev/c/monogon/+/260
Reviewed-by: Mateusz Zalega <mateusz@monogon.tech>
diff --git a/metropolis/node/core/main.go b/metropolis/node/core/main.go
index e15cd6c..106bc23 100644
--- a/metropolis/node/core/main.go
+++ b/metropolis/node/core/main.go
@@ -32,6 +32,7 @@
 
 	"golang.org/x/sys/unix"
 	"google.golang.org/grpc"
+
 	common "source.monogon.dev/metropolis/node"
 	"source.monogon.dev/metropolis/node/core/cluster"
 	"source.monogon.dev/metropolis/node/core/curator"