cmd/go/internal/mvs: split Reqs into narrower per-function interfaces
cmd/go/internal/mvs: split Reqs into narrower per-function interfaces

Reqs currently combines requirements with upgrades and downgrades.
However, only Upgrade needs the Upgrade method, and only Downgrade
needs the Previous method.

When we eventually add lazy loading, the lazily-loaded module graph
will not be able to compute upgrades and downgrades, so the
implementation work from here to there will be clearer if we are
explicit about which are still needed.

For #36460

Change-Id: I7bf8c2a84ce6bc4ef493a383e3d26850e9a6a6c0
Reviewed-on: https://go-review.googlesource.com/c/go/+/290771
Trust: Bryan C. Mills <1c8aad60184261ccede67f5c63a0d2a3bf3c9ff4@google.com>
Reviewed-by: Michael Matloob <4562438b12c14e81a47550acde616ff328a909f8@golang.org>
Reviewed-by: Jay Conrod <f3fadaedc813344da5ec13b41e26596889cc5baa@google.com>

nawawi/go,cloudflare/go,cloudflare/go,golang/go,cloudflare/go,cloudflare/go,CAFxX/go,nawawi/go,golang/go,nawawi/go,CAFxX/go,cloudflare/go,cloudflare/go,nawawi/go,nawawi/go,CAFxX/go,golang/go,cloudflare/go,CAFxX/go,golang/go,nawawi/go,CAFxX/go,golang/go,nawawi/go,golang/go,golang/go,CAFxX/go,CAFxX/go,CAFxX/go,nawawi/go,golang/go,cloudflare/go