The `log.Logger` type still converts to a `logrus.Entry` when calling
functions like `WithField()` or `WithError()`. This was hard to change
though because a lot of callsites still relied on this conversion. By
now we have have fixed all blockers though, which allows us to finally
do the conversion and have the `log.Logger` type roundtrip to itself.
To do so, we inline the `logrus.FieldLogger` interface and adapt the
specific functions to return a `Logger` instead of a `logrus.Entry`.
This change also demonstrates that all internal interfaces now use the
interface exclusively and that we are free to adapt the interface as
required from now on.
Note that we also have to add two additional functions to the interface
to create the logging interceptors for the gRPC server. This is because
we have no way to create these interceptors manually from a `log.Logger`
anymore and thus need its help to do so for us.
WithInterceptedMetadata() uses testproto.ErrorMetadata, which is in a test-only package. This function is only used in tests so move it to testhelper and interceptors into testserver