Fix a very ugly case in 'svn status' where 'svn status wc' and
'svn status wc/path' could show a different status for path.

This also makes 'svn status' always describe the highest moved_to when
there are multiple moves from a single location.
(This behavior was undefined before, but identical to what you would get with
 the usual index usage in sqlite)

This patch has the nice side effect that it resolves the most common crash
report in the current AnkhSVN version: an assertion caused by an invalid
move stored in wc.db.

* subversion/libsvn_wc/status.c
  (read_info): Move this function into wc_db.c to allow using a lock and
    access to private apis.
  (assemble_status): Update caller. Update moved_to usage.
  (get_dir_status,
   get_child_status,
   svn_wc__internal_walk_status): Update caller.

* subversion/libsvn_wc/wc-queries.sql
  (STMT_SELECT_MOVED_TO_NODE): New query.

* subversion/libsvn_wc/wc_db.c
  (read_children_info): Set moved_here as documented: only for op-roots.
    Don't duplicate name for every higher layer.
    Hook moved_to information in a linked list, to provide users all move
    information.
  (read_single_info,
   svn_wc__db_read_single_info): New function. Based on status' read_info,
     but more

* subversion/libsvn_wc/wc_db.h
  (svn_wc__db_moved_to_info_t): New struct.
  (svn_wc__db_info_t): Describe all moved_tos.
  (svn_wc__db_read_single_info): New function.

* subversion/tests/cmdline/stat_tests.py
  (status_move_missing_direct): Remove XFail marker.


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