Fixed how the listener threads start so they only start AFTER joining a
channel.

Sub-classes can override this behavior if they choose (for instance,
some kind of a maintenance thread using the listener framework)