Teach FSFS to store and report MOVes.  However, this patch does not add
fs_move() to the FS API, yet.

This models MOVes similar to ADDs, i.e.
- there is move as well as move-replace
- fs_move is an add-with-history that requires the copy-from revision to
  be equal to the TXN's base revision
- move sources must be deleted explicitly in a separate DEL operation

Hence, all history traversal and TXN rebase code just works out of the box
and no other operation ordering is required in the commit editor other than
the one already in place for add / replaces.

During the final commit stage, we check for duplicate move targets including
intermediate revisions since the TXN's base revision.  We also check that
all move source paths have been deleted by that TXN.

* subversion/include/svn_error_codes.h
  (SVN_ERR_FS_AMBIGUOUS_MOVE,
   SVN_ERR_FS_INCOMPLETE_MOVE): declare new error codes

* subversion/include/svn_fs.h
  (svn_fs_path_change_kind_t): add move and move-replace

* subversion/libsvn_fs_fs/low_level.c
  (ACTION_MOVE,
   ACTION_MOVEREPLACE): declare new change type strings
  (read_change,
   write_change_entry): write / parse the new change types

* subversion/libsvn_fs_fs/transaction.c
  (replace_change):  factored out from ...
  (fold_change): ... this one; handle moves similar to adds
  (process_changes): handle move-replaces similar to replaces
  (write_final_changed_path_info): update move source revs to Rev-1;
                     make changed_paths an input parameter
  (check_for_duplicate_move_source,
   verify_moves): new move verification code
  (commit_body):  verify moves when finalizing the commit;
                  update function all

* subversion/libsvn_fs_fs/tree.c
  (enum copy_type_t): declare new parameter type
  (copy_helper): support moves just like ADDs; add extra param checks
  (fs_copy,
   fs_revision_link): update callers
  (fs_move): add new function for MOVes

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