Add "EvalError" datatype to return more useful error messages from eval.

Also add a lot of tests for invalid arguments to stdlib functions.