Caching (fixes #31), rewrite yolo in yolisp (fixes #27)

![](http://mylittlefacewhen.com/media/f/img/mlfw3330-1330548352244.gif)
No, we're not allowing it to modify the parent scope. The problem is that `let` is executed after we define `$eval`, so `$eval` has a cached version of the environment which doesn't have the variables that have been added.