Fix problem with undeclared variables in and/or branches.
Fix problem with undeclared variables in and/or branches.

Consider the following code:

    (with (x '(1 2 3))
      (when (with (snd (nth x 2))
              (and snd (< snd 2)))
        (print! "True")))

As we're branching on a variable in a directly-called lambda, this is
considered an "and-lambda" statement. However, as snd is used within
the else block, this is an invalid optimisation.

Instead, we check that the argument isn't used anywhere else within
the condition - if it is then we emit a normal call/call-lambda instead.

SquidDev/urn,SquidDev/urn