This change adds a new trait -- `Builder` -- which defines a value that
can create new recorder instances.
As we have a need to generate owned recorders, in particular for
futures-based code, the `Builder` trait provides a way to do so without
any jankiness, such as the prior Clone-based approach.
As such, all exporters now expect a builder to be passed in, rather than
the recorder itself.