refactored input metrics handling

transports now return a MetricSet instead of registering the metrics directly, which avoid leaking the MessageInput instance into the metric registration