Cleaner code generation

* src/pf/codegen.lua: Avoid pushing do blocks if nothing can jump into
  the false branch of a conditional.  Optimize in tests.
Fixed-point algebraic simplification of conditionals

* src/pf/optimize.lua: Split the algebraic "if" simplifications out of
  simplify, so that we can locally iterate to a fixed point.
Exhaustively optimize to a fixed point.

* src/pf/optimize.lua: Fixed-point optimization.