move CURRENT_ARRAY_LENGTH_NAME to shared.gs
Initial work on the simplified parser nodes
Remove Node.Const, replaced fully with LispyNode.Value
Node.Args => LispyNode.Symbol.ident("arguments")
Node.This => LispyNode.Symbol.ident("this")
Node.Break => LispyNode.Call(LispyNode.Symbol.break)
Node.Continue => LispyNode.Call(LispyNode.Symbol.continue)
Node.Debugger => LispyNode.Call(LispyNode.Symbol.debugger)
Node.Throw(node) => LispyNode.Call(LispyNode.Symbol.throw, node)
Node.Yield(node) => LispyNode.Call(LispyNode.Symbol.yield, node)
Node.Return(node) => LispyNode.Call(LispyNode.Symbol.return, node), also make the AST smart about not having a return; at the end of a function.
Make automatic boolean inversion's compiled result look a bit nicer.
Add LispyNode.InternalCall as a way of making a call with a known internal symbol.
Remove Node.RegexpNode, turn it into a call to RegExp, which is then translated if possible to a literal JS RegExp.
Remove CascadeNode, instead just handle it through the single macro that used it previously.
Node.Comment(node) => LispyNode.Call(LispyNode.Symbol.comment, node)
Use an object of functions instead of a switch statement for lispy node translation.
Node.TryFinally(try-body, finally-body) => LispyNode.Call(LispyNode.Symbol.try-finally, try-body, finally-body, label?)
Node.TryCatch(try-body, catch-ident, catch-body) => LispyNode.Call(LispyNode.Symbol.try-catch, try-body, catch-ident, catch-body, label?)
Node.ForIn(key, object, body, label?) => LispyNode.Call(LispyNode.Symbol.for-in, key, object, body, label?)