Extract IReducible interface
Introduce IStatement
Rename IExpression.cs to IExpression{T}.cs
Move all Expression classes to folder
Create Statements folder
Add DoNothing statement (page 33)
Inspect extension method is not specific to expressions
Implement Assign

Needed to add method to IEnvironment that creates a new one with a
variable set. It's not implemented yet.
Implement IEnvironment

as an immutable class, using an ImmutableDictionary
Tests for Assign.Reduce()
Make the Machine reduce statements

and update the environment. No tests yet.
Tests for the statement Machine

plus small refactorings
Finish statement machine (page 36)

By renaming Machine{T}.cs to Machine.cs