With in-memory merge, backup files might be overlayworkingfilectxs stored
in memory. But they could also be real files if the user's backup directory is
outside the working dir.
Rather than have two code paths everywhere, let's use arbitraryfilectx so they
can be consistent.
Well that's a bummer. Could we move context.*filectx* into mercurial.filecontext and then avoid the need for this function-level import?