When mixed revision moves are not an error, make the move handling degrade
to a proper copy+delete when encountering mixed revisions instead of still
recording a move, which most likely breaks later.

Also degrade/convert to a no-move when a node is moved back to its original
location.

* subversion/libsvn_wc/copy.c
  (copy_or_move):
    Always degrade to copy and delete when doing a multi-db move.
    Mixed revision-ness is only interesting when moving base nodes as
    the result only applies to BASE anyway. Degrade to copy when the
    mixed revision check says we can't move instead of recording a
    move for mixed revisions anyway.
    After a move ask wc_db to undo move-backs.

* subversion/libsvn_wc/wc-queries.sql
  (STMT_SELECT_MOVED_BACK,
   STMT_DELETE_MOVED_BACK): New query.

* subversion/libsvn_wc/wc_db.c
  (handle_move_back,
   svn_wc__db_op_handle_move_back): New function.

* subversion/libsvn_wc/wc_db.h
  (svn_wc__db_op_handle_move_back): New function.

* subversion/tests/cmdline/copy_tests.py
  (move_file_back_and_forth,
   move_dir_back_and_forth): Update expected result.

* subversion/tests/libsvn_wc/op-depth-test.c
  (move_to_swap): Extend testcase. Add commented section testing a different
    problem.
  (test_list): Mark mixed_rev_move() as WIMP, because this triggers a copy
    and delete now.


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