Directly using the collector gives us more control of the annotations. The main improvement/change here is that we need to send the span name and parent details downstream as well as the span id. It's not logically required by the trace model, but zipkin needs it, so it can set annotations on the parent span (server recv/send).