We sould factor catching of IO exceptions into applyToWorking to
reduce duplication, now that we do it uniformly whenever we call it.
We also sometimes call applyToWorking inside withSignalsBlocked but
not uniformly. We do it for clone (when conflicts are marked),
unrevert, mark-conflicts, and for pull and apply via
standardApplyPatches. But not for rollback, revert, unrecord,
replace, rebase suspend/unsuspend.
I fail to see the pattern here.
The apparent rationale for withSignalsBlocked is that an interrupt
(user hitting Ctrl-C) would mean that changes may be applied
partially, leaving the working tree in an inconsistent state. Makes
sense but again I can't see a reason not to do this uniformly, which
means we can also factor it into applyToWorking.