Update environment binding after interpreting an expression

A call to interpret-stmt needs an environment list (something like:
  '((a 4) (b 5))
) that is updated with the correct state up until that point. This adds
a let variable "env" which is such a list. It is "set!", after each
statement executes, to the return value from interpret-stmt. It seems
like this usage of the variable is in accordance with the "General
Guidelines" on the assignment.

One potential TODO: I think it might actually be more appropriate to do
the "set!" in the interpret-assign function, as that is one of two
places that the environment can change. (It, and the to-be-written
interpret-declare for "var x;" are the only two that I can think of)

basic.c is a test file with stuff that we have implemented in the
interpreter.