Use makePromise more widely in lib/util.js.
Use hard links into the .module-cache directory instead of double-writing.

This makes the time required to create new CommonJS output files independent of the file size.