Generalizing Boolean Satisfiability I: Background and Survey of Existing Work