Interpreter now evaluates node objects rather than evaluating the
program itself. These should help interpret loops and function calls