compiler: Fix kill-temps pass.
compiler: Fix kill-temps pass.

Due to the way it traverses the AST, it must update the let binding
list immediately after removing a variable or the variable may end up
incorrectly being preserved, leading to duplicated code.

Testcase:
(lambda (thread)
  (LET ((STACK-TOP
         (+ (MEZZANO.SUPERVISOR::STACK-BASE (MEZZANO.SUPERVISOR:THREAD-STACK THREAD))
            (MEZZANO.SUPERVISOR::STACK-SIZE (MEZZANO.SUPERVISOR:THREAD-STACK THREAD)))))
    (LET ((N (- STACK-TOP)))
      (LET ((I 0) (LOOP-LIMIT-4997 N))
        (TAGBODY
         MEZZANO.LOOP::NEXT-LOOP
                 (SETQ I (+ I 2))
                 (WHEN (>= I LOOP-LIMIT-4997) (GO MEZZANO.LOOP::END-LOOP))
                 (GO MEZZANO.LOOP::NEXT-LOOP)
         MEZZANO.LOOP::END-LOOP)))))

froggey/Mezzano,froggey/Mezzano