Make ChannelSet immutable

Rewrite ChannelSet using GroupByHash as a template