Fix some parenthesization issues for BinExpr and prefix UnExpr:

* The default for BinExpr should be to parenthesize both branches.
* Constant expressions do not need to be parenthesized.
* Prefix UnExprs may need to be parenthesized, e.g. it should be
    NOT (TRUE AND TRUE)
  rather than
    NOT TRUE AND TRUE;
  For safety this patch parenthesizes all prefix UnExprs.