Graph Coloring, Types and Applications: A Survey