On fsfs-lock-many branch: implement the multiple path functions
svn_fs_lock2 and svn_fs_unlock2 for FSFS along with the the
corresponding repos wrappers.  All the locking now goes via the
multiple path functions but only passing a single path at a time.
Add some low-level regression tests to exercise the code with
multiple paths.  This also fixes issue 4472, digest/lock written
in wrong order.

Notes:
 - BDB just loops calling the single path function at a low-level.
 - FSX is currently non-working but will eventually be a duplicate
   of FSFS.

* subversion/include/svn_fs.h
  (svn_fs_lock_target_t,
   svn_fs_lock_result_t,
   svn_fs_lock2,
   svn_fs_unlock2): New.

* subversion/include/svn_repos.h
  (svn_repos_fs_lock2,
   svn_repos_fs_unlock2): New.

* subversion/libsvn_fs/fs-loader.c
  (svn_fs_lock2): New.
  (svn_fs_lock): Call svn_fs_lock2.
  (svn_fs_unlock2): New.
  (svn_fs_unlock): Call svn_fs_unlock2.

* subversion/libsvn_fs/fs-loader.h
  (lock, unlock): Change parameters.

* subversion/libsvn_fs_fs/lock.h
  (svn_fs_fs__lock,
   svn_fs_fs__unlock): Change parameters.

* subversion/libsvn_fs_fs/lock.c
  (set_lock,
   delete_lock): Just act on one file.
  (add_to_digest,
   delete_from_digest): New.
  (struct lock_baton): Change members.
  (check_lock,
   struct lock_info_t): New.
  (lock_body): Handle multiple paths.
  (struct unlock_baton): Change members.
  (check_unlock): New.
  (unlock_body): Handle multiple paths.
  (unlock_single): New.
  (svn_fs_fs__lock,
   svn_fs_fs__unlock): Change parameters.
 
* subversion/libsvn_fs_base/lock.c
  (svn_fs_base__lock,
   svn_fs_base__unlock): Change parameters.

* subversion/libsvn_fs_base/lock.h
  (svn_fs_base__lock,
   svn_fs_base__unlock): Change parameters.

* subversion/libsvn_repos/fs-wrap.c
  (svn_repos_fs_lock2): New.
  (svn_repos_fs_lock): Call svn_repos_fs_lock2.
  (svn_repos_fs_unlock2): New.
  (svn_repos_fs_unlock): Call svn_repos_fs_unlock2.

* subversion/libsvn_repos/repos.c
  (SVN_REPOS__HOOK_POST_LOCK): Tweak comments in prototype file.
  (SVN_REPOS__HOOK_POST_UNLOCK): Tweak comments in prototype file.

* subversion/tests/libsvn_fs/locks-test.c
  (lock_multiple_paths): New test.
  (test_funcs): Add new test.

* subversion/tests/libsvn_ra/ra-test.c
  (make_and_open_local_repos): Create auth baton.
  (commit_tree): New helper.
  (struct lock_baton_t): New.
  (lock_cb): New helper.
  (lock_test): New test.
  (test_funcs): Add new test.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/fsfs-lock-many@1571812 13f79535-47bb-0310-9956-ffa450edef68