closes #6

The State Monad has been applied to the interpreter. The resulting
encodings are therefore more generic and we can now keep track of the
interpreter internal steps.