Translated if now honors prederror
Commit
74c138c9 changed the translator so that prederror was bound to
true around translated MCONDs. Prior to that commit, the generated
code was generally incorrect when prederror was false. See bug #3412
for more.
Now a translated `if` behaves the same as an interpreted `if` when
prederror is false. If the predicate can't be evaluated to a boolean
value, then an `if` expression is returned.
See also bug #4008.
No problems with the test suite, share test suite or rtest_translator.
New tests have been added to rtest_translator.