batches: track fork status on changeset specs
Created by: LawnGnome
This is required to be able to display the fork indicator consistently when previewing and processing new changesets, and moves the place we check the global fork state out of the reconciler, which is probably more correct.
As a bonus, this will greatly simplify adding new fields to the changeset spec that control fork behaviour, since we can simply extend computeForkNamespace()
to take that into account.
One wrinkle here is that changesets that haven't yet been published to the user fork have to have some way of indicating that they're going to be pushed to a user fork. We don't know the credential that will eventually be used, so we don't know the namespace name. As a result, I've introduced a new extension to the branch UI changes that were made in #29367:
Fixes #29632 (closed).