Fix vm evaluation strategy

Had to completely rework the evaluation strategy from the ground up...  More discussion is in issue #4 about what I had to do, which took a lot of trial and error, and digging around in GHCi to get it working!  Resolves #3 #4 #5