replay: Ensure copyfrom operations are properly handled
A subversion revision can contain new directories and files copied from
ancestor revisions but those were not perfectly handled in the commit
editor used to reconstruct the repository filesystem when replaying
revisions.
In particular previous implementation could not handle the case where a
path copied from an ancestor revision is replaced in a same commit (for
instance replacing a directory by a file with the same name).
These changes ensure that info about source path and source revision from
which a path is copied is passed to the commit editor methods as paramaters
in order to let them handle the copies but also that the replace operations
will be correctly replayed.
It also prevents OS error "Too many open files" when a really large files
tree is copied from an ancestor revision.