Fix inconsistency in ?: between evaluate & observe

Fixes an inconsistency in the ternary conditional operator, symbolically
`?:` and named "if" internally, between the implementation of evaluate
and observe. With this change, binders, assigners, evaluators, and
observers all consider a null or undefined input indicative of an
undefined output, rather than interpreting the input as false.