Add code to handle when the test expression is neither true nor false.

Closes PR 14564.
In the case where only one branch is taken, we leave the dead code elimination to the compiler. We just don't optimize the branch not taken. 

If neither branch is taken, we don't give the compiler any dead code elimination hints but we don't optimize either branch (which is where the bug was). I would like there to be dead code elimination in this case but I'm not sure a clean way to get it to work while working with check syntax. The best I came up with is
```
(begin0 tst.opt
  (lambda () thn els))
```