Implement the mod_dav_svn overwrite protection of 'svnmucc' in the mtcc api.
Also add several verifications for properties. Use specific fs error codes
instead of the same illegal target error everywhere.

* subversion/include/svn_client.h
  (svn_client_mtcc_check_path): New function.

* subversion/libsvn_client/mtcc.c
  (mtcc_op_find): Use better error code.
  (get_origin): New function.
  (svn_client_mtcc_get_origin): New function.
  (mtcc_verify_create): New function.

  (svn_client_mtcc_add_add_file,
   svn_client_mtcc_add_copy,
   svn_client_mtcc_add_delete,
   svn_client_mtcc_add_mkdir): Verify target location before scheduling a
     possible replacement.

  (svn_client_mtcc_add_move): Move from the mtcc location instead of from the
     repository location.
  (svn_client_mtcc_add_propset): Verify property names and values.
  (svn_client_mtcc_add_update_file): Verify target location.
  (svn_client_mtcc_check_path): New function.

* subversion/tests/libsvn_client/mtcc-test.c
  (make_greek_tree): Assume that the base revision is 0.
  (test_overwrite): New function.
  (test_funcs): Add test_overwrite.


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