Make eval's Env param not mutable. Also fix a function call bug.
not completely tested, but initial test of defun works.
reorganize code folder