last of the error-reporting unit tests, and an additional error type to handle modules that are referenced but don't exist, which should stop the build. All tests pass.