ScriptService: add script accessor methods
ScriptService: index scripts by File, not String

That way, we can use the canonical file logic to make various
relative and absolute file paths equivalent to one another.

It should always be the case (famous last words) that scripts are
discovered from the local file system, rather than as remote URLs.
Yes, we want to work with scripts from input character streams, but
such scripts will not be explicitly indexed by the script service.
DefaultScriptService: add missing final keyword
ScriptService: update eval methods & rename to run

The new run methods now use ScriptInfo objects, and are patterned
after the existing run methods of ModuleService and CommandService.
DefaultScriptService: remove obsolete code

The script input parsing is now part of ScriptInfo.
ScriptService#run: use narrower return type
WIP