Add big-step semantics verion of Simple lang

This change adds the big step semantics version of the Simple lang, this
has each expression and statement in control of themselves (rather than
being call from a machine), recursively descending down into sub
expressions on evaling.

The change then goes on to add methods to our AST objects that output
a ruby code representation of themself. We can then `eval` and `.call`
this to run the program.