Define a type "environment".

A big record that should have everything that the semantics, type
system, inferencer and compiler needs. Define a function that takes a
program and runs the clocked interpreter, type inferencer, and compiler
on it and extends the environment.