Adding error handling to eval phase

Changes:
- Evaluation phase now supports error handling; errors will be propagated back to the top level rather than crashing the interpreter
- Error-related types and related code moved to evaluate.swift
- Added new error types to replace placeholder calls to 'fatal()'
- stdlib loader now checks if stdlib has errors and quits the interpreter if so
- Fixed an errant docstring on 'fatal()'