Add some tests for basic part 2 functionality
Create the new environment, it's like a parfait

...it has layers[1]

Each layer looks something like
'((x y) (10 20))

Combined, they look something like
'(
  ((x y) (10 20))
  ((x z) (5 20))
)

We traverse layers of the environment starting with the first, so x will
have the value 10. Also if you call (update-environment x 20 env) with
that environment, the first instance of x will be changed.

[1]: http://instantrimshot.com/
Merge branch 'new_environment'

* new_environment:
  Create the new environment, it's like a parfait