Combine require and forbid impls
Improve generation of require/forbid of formula

eg improve require(f);require(f) or require(f) then use f
Give generateClauses access to formulaToTerm

can call either t.clause or t.term
Xor uses termifier.generate
Finish _generateFormula and require/forbid

…in terms of what is which’s responsibility.

Allow Logic.xor(…) to return a term in the one-arg case.  From now on, helpers like Logic.and, Logic.or, and Logic.xor don’t have to return AndFormulas, OrFormulas, or XorFormulas; they can return other formulas or terms if they like, resulting in fewer intermediate variables.

This completes nested formula generation, so now we are ready for atMostOne.