This completes work of removing I/O from exposed constructors. By using
CollectorComponent, you can defer I/O to the `start` method.
This also moves all code formerly called transport to collector packages
in preparation of adding a reporter package.
Finally, this consolidates code duplication around the collectors.