Distributed Graph Coloring : Fundamentals and Recent Developments