Defining a Frame class.
Be more helpful if we can't evaluate a value.

Note hitting this assertion is an interpreter bug, not a user error.
Rewriting evaluate to use a while loop instead of recursion.

This 'reifies the stack' so we have an explicit stack rather than
consuming stack in RPython.

Currently, this only works with simple values and if statements. I've
been testing in IPython as I go. The basic workflow is this:

    from environment import *
    from trifle_parser import *
    from lexer import *
    import evaluator
    env = Environment([Scope({'x': 1})])
    e = parse_one(lex(u"(if #true 1 2)"))
    evaluator.evaluate(e, env)

    # Fix a bug in evaluator.py, try again:
    reload(evaluator)
    evaluator.evaluate(e, env)
Don't pass the stack around, it's now just a local variable.
Factoring out duplicate code.
Refactoring evaluate_list to (mostly) use the stack.
Imlementing a proper Stack object.
FunctionWithEnv does not take the stack as an argument.
Don't pass the stack around when unnecessary.
Evaluate lambda expressions in this new iterative evaluation scheme.
Adding explicit unit tests for attempting to call values that aren't callable.
Unit test that we return the last value from a lambda body.
Fixing lambda evaluation in our new iterative evaluation scheme.
Ensure macro expansion works in our new iterative evaluation scheme.
Fixing some broken prelude tests due to changing calling conventions.
Rewriting `while` to use iterative evaluation.
Renaming Frame.is_lambda to Frame.as_block since we use it for while
loops too.
Refactoring FunctionWithEnv to also take the stack as an argument.
Refactoring `eval` to use iterative evaluation.
Ensure `call` works with lambda literals.