Two-step conflict checkout (load / perform)

Move conflict handling into two steps: load the conflicts and
then apply the conflicts.  This is more compatible with the
existing checkout implementation and makes progress reporting
more sane.
Move functions in checkout_conflicts to checkout.c

It seemed exceptionally silly to have a split there
where no split needed to be.
merge writes workdir contents using index checkout (with conflicts)
Update args ...