Fix double-execution of modules required with differing relative paths.

I encountered a bug where two calls to `require` for the same target module, with differing relative paths to that module, resulted in that module's wrapping closure being executed twice. The issue was because cache misses resulted in calling `fn`, even if the module was already in `modules`. This change makes sure the absolute path to any module is always in `cache`.