move lexical environment stack to IR compile phase

Previously this existed in the Lua generation phase, however after some
thought, I realized this has to be known at IR generation time due to
having to support macros.

When a cons cell is encountered that is not a special form, then it has
to know at that point whether it is a new lexically introduced variable
or it belongs to a namespace.

If it belongs a namespace then it can possibly be a macro, which
requires Lisp evaluation to expand it.

This approach also correct (let) lexical scope as I realized that
introducing them all at once is wrong. It really has be to introduced
per variable.