lib: merge cjs and esm package json reader caches
This PR contains a refactor to merge package.json reader caches in both CJS and ESM.
I extracted the relevant parts from https://github.com/nodejs/node/pull/47991.
cc @nodejs/loaders @nodejs/modules
PS: This PR has no effect on execution speed.
hyperfine './out/Release/node ../fastify/fastify.js' 'node ../fastify/fastify.js' 'bun ../fastify/fastify.js' -i --warmup 10
Benchmark 1: ./out/Release/node ../fastify/fastify.js
Time (mean ± σ): 88.3 ms ± 1.8 ms [User: 85.5 ms, System: 20.3 ms]
Range (min … max): 84.7 ms … 94.8 ms 33 runs
Benchmark 2: node ../fastify/fastify.js
Time (mean ± σ): 88.8 ms ± 2.1 ms [User: 83.2 ms, System: 21.8 ms]
Range (min … max): 84.0 ms … 95.0 ms 33 runs
Benchmark 3: bun ../fastify/fastify.js
Time (mean ± σ): 99.6 ms ± 1.5 ms [User: 84.5 ms, System: 19.9 ms]
Range (min … max): 98.3 ms … 103.6 ms 29 runs
Summary
./out/Release/node ../fastify/fastify.js ran
1.01 ± 0.03 times faster than node ../fastify/fastify.js
1.13 ± 0.03 times faster than bun ../fastify/fastify.js