Applications of Logic to Combinatorics