On the Structure of the Boolean Satisfiability Problem: A Survey