Enable package restore
Make Reduce take an IEnvironment

So that we can implement variables later. Also, the Machine takes an
IEnvironment that is passes to the expression it repeatedly reduces.

It starts to look like Machine should not be generic, but we'll see.
The enviroment holds expressions, not naked values

This way we don't confuse C# concepts with the concepts in the Simple
language
Add variables (c#, page 32)

They are read-only for now, their values need to be set in the
environment before hand