Cliques, colouring and satisfiability : from structure to algorithms