context: reuse changectx._copies() in all but workingctx

Authored by martinvonz.

Description

context: reuse changectx._copies() in all but workingctx

This moves the dirstate-specific _copies() implementation from
committablectx into workingctx where it should be (I think all
dirstate-specific stuff should be moved into workingctx). The part of
changectx._copies() that is for producing changeset-wide copy dicts
from the filectxs is moved into basectx so it's reused by the other
subclasses. The part of changectx._copies() that's about reading copy
information from the changeset remains there. This fixes in-memory
rebase (and makes hg convert able to write copies to changesets).

Differential Revision: https://phab.mercurial-scm.org/D6219