bootstrap/ast: Non-exhaustive If blocks are OK, but have type void
bootstrap/ast: Non-exhaustive If blocks are OK, but have type void

We previously would raise an error for non-exhaustive if blocks (our
detection was limited to lacking a else term).

This is overly restrictive. N is a mostly imperative language, we need
this form.

However, it is sometimes useful to use the result of an if block. While
this is not yet support by the rest of the parser, we will allow it by
typing ExprIf to non-void only when the if block is complete.

nanocritical/n,nanocritical/n,nanocritical/n,nanocritical/n