Replace the wc-diff implementation which was originally based on an old
version of the repos-wc diffs local walk with a simple stack for the
diff processor state and a few calls in common functions shared with
the repos-wc diff.

* subversion/libsvn_wc/diff_local.c
  (node_state_t): New struct.
  (diff_baton): Remove unused values. Add new values.

  (get_empty_file,
   get_prop_mimetype,
   file_diff): Remove functions.

  (diff_status_callback): Replace body with new code, using the stack and
    the node state to determine which diff function to call.

  (svn_wc_diff6): Apply new rules for use_git_diff_format and
    show_copies_as_adds. Close remaining batons after leaving the status
    walker.

* subversion/tests/cmdline/diff_tests.py
  (make_git_diff_header): Support generating a copy from revision, as we start
    generating these now.
  (diff_git_format_wc_wc,
   diff_git_format_wc_wc_dir_mv): Add copyfrom revisions. Define an explicit order as
    this diff is based on the status walker, which sorts nodes per directory.


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