Throw scheme exception for if-bodies without exactly 3 args.

Much better than a haskell error
Use guards instead of if/else
Rename Value module to Evaluator, since that's what it is
Slight style cleanup
We weren't actually using resolve here
Comment to clarify intent
Make an Env into a scheme-level value
Clean up implementation of scheme primitive functions