bridge: Move UTF8 validation to CockpitChannel

This allows multiple channels to take advantage of this. For
channels that are sure they're producing valid UTF8, there's a
flag so we don't have to recheck everything.