Eval context

This adds some context to the eval, so things like __FILE__ will work, and so that error messages get generated referring to the correct file.