Stateful REPL

Fixes #2 

So I'm just doing this in a reader monad and then adjusting the context for the next iteration every time something gets defined. Names for declarations are just `_0, _1, _2,..._n`.

Any ideas for improvement are appreciated!