Prevent the source repo from being packed while hotcopying a format 7
FSFS repo.  To do that, we need to "properly" open source and target
repo such that both get independent mutex objects (used to be shared
in the past).  We can't lock the source repo if it is pre-f7 unless
we want to completely prevent commits during hotcopy.

To be able to open the target repo using the standard fs_open, we
must factor out the target repo creation / check functionality from
the actual hotcopy function.  Having a complete, empty target repo
from the beginning is fine for hotcopy because only the revs up to
the current youngest_rev will be actually visible.  I.e. the hotcopy
process controls which revs are deemed complete.

* subversion/libsvn_fs_fs/fs.c
  (fs_hotcopy): Target preparation & opening are now outside the
                actual hotcopy function.

* subversion/libsvn_fs_fs/hotcopy.h
  (svn_fs_fs__hotcopy_prepare_target): Declare new function.
  (svn_fs_fs__hotcopy): Paths are no longer needed as incoming FS
                        are open and carry path info.

* subversion/libsvn_fs_fs/hotcopy.c
  (hotcopy_body): The target repo format file is being written as part
                  of hotcopy_create_empty_dest now.
  (hotcopy_setup_shared_fs_data): Obsolete due to standard repo opening.
  (hotcopy_locking_src_body): New. Take the source repo lock out for f7.
  (hotcopy_create_empty_dest): Write format file to complete the on-disk
                               target repo.
  (svn_fs_fs__hotcopy_prepare_target): New function, factored out from ...
  (svn_fs_fs__hotcopy): ... this one.  Lock both sides of the copy.

git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1589284 13f79535-47bb-0310-9956-ffa450edef68