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)