starting to lensify interpreter, cleanups in ast
Added an interpreter monad