Splits channel construction into two files selected at
compile-time via `if (dart.library.html)`:
channel_factory_io.dart — native ClientChannel (HTTP/2)
channel_factory_web.dart — GrpcWebClientChannel.xhr (HTTP/1.1)
HubClient._channel is now `ClientChannelBase` so both
implementations satisfy the same field type. dart:html-only
imports (`package:grpc/grpc_web.dart`) stay isolated from the
native compile path.
Pairs with the hub-side `fai_grpc_web` adapter crate
(fai/platform 0d07892) — `tonic-web` on the same port as
native gRPC, so one `fai serve` listener handles both
surfaces.
Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>