Add timeout/retry handling for fetch cache (#66652)
As discussed this adds handling to timeout at a max of 500ms for fetch
cache request and retries a max of 3 times due to network instability.
This also adds cache service tests and fixes a case we've been trying to
track down where we were seeing `undefined` cache URL values which made
debugging fetches tricky.
# Conflicts:
# packages/next/src/server/base-server.ts
# packages/next/src/server/lib/incremental-cache/fetch-cache.ts
# packages/next/src/server/web/spec-extension/unstable-cache.ts