Re-implement Server Action reducer (#86367)
Rewrite of the Server Action reducer to use the PPR/Segment Cache
navigation implementation, rather than the old lazy fetch
implementation.
Server Actions may trigger a revalidation, a redirect, or both. They may
also invalidate the cache. The behavior could be naively implemented
using router.refresh() and router.push(). Semantically, the routing
behavior is equivalent.
The main difference is that the server that invokes the action may also
send back new data for the page within the same response. Compared to a
separate request, this data is more likely to be consistent with any
data that may have been mutated by the action, due to global data
propagation races. (It's also faster since it avoids an extra server
waterfall.)
So, navigations initiated by a Server action must be able to "seed" the
navigation with the data it just received from the server. I've added a
new internal method, navigateToSeededRoute, that implements this
behavior.