- separate exporter, writer, subscriber
- use the subscriber span tbl to keep track of context
- use a `Buf_chain.t` to keep multiple buffers in use,
and keep a set of ready buffers
- batch write the ready buffers and then recycle them
- in entering manual spans, we now pass an explicit span_ctx that
contains a trace_id (bytes) and the parent span id (int64).
- this makes compat with OTEL easier as we want this sort
of span_ctx to be passed around.