Compilation to JavaScript

To make our λanguage more efficient, instead of evaluating (interpreting) the AST we should transform it into a program in our target language (JavaScript). Then we can run it with eval or new Function (or load it with a <script> tag) and I promise you that the speed improvement will be dramatic. I've split this work in three parts:

It might seem weird that I'm starting with what should be, intuitively, the “last phase” (code generation). I do that because it's fun and easy, and it will help us implement and debug the latter phases. We will only need minor modifications in the code generator after the latter stages.