Make task_channel_group class thread-safe
Change underlying container type

Change task_channel_group class to use std::unordered_map as  underlying
container type