Distributed Graph Coloring: Fundamentals and Recent Developments (Synthesis Lectures on Distributed Computing Theory)