Split Machine into ExpressionMachine and StatementMachine

There are two distinct machines in the chapter, so we should have
two distinct machines in the example code.

This should reduce the confusion seen in #1 and #2.
Reintroduce a Machine class for backwards compatibility

Machine.new should continue to work, but with a warning about
ExpressionMachine and StatementMachine.
Add a quick README for chapter 2
Document the Machine/ExpressionMachine/StatementMachine situation in the chapter 2 README