Auto channel features.

Channels with default methods now automatically choose different, unused channels.
They will favor unmatched channels first. If there's a broadcast channel with no listener, a default listener will choose that channel first.

Please try it out and let's see if it feels intuitive.
Why did you need to move all of this code?