To allow resolving serveral open issues in the repository diff support (missing
information) and merge handling (tree conflicts involving deletes), add an
improved diff callback infrastructure.

To avoid having to rev the entire api again in the next version, I pass the
structure itself to all functions. This allows future implementations to
call older functions without breaking backwards compatibility.

This commits add the processing infrastructure, including a processor that
reverses all operations. Future separate commits will include a wrapper to
the old diff api and an update to the repository diff editor to use this
new infrastructure while staying compatible via the wrapper.

* build.conf
  (libsvn_diff): Add header to exports.

* subversion/include/private/svn_diff_tree.h
  New file.
  (svn_diff_source_t): New struct.
  (svn_diff_tree_processor_t): New struct.

  (svn_diff__tree_processor_create): New function.
  (svn_diff__tree_processor_reverse_create): New function.
  (svn_diff__source_create): New function.

* subversion/include/private/svn_diff_tree.h
  New file.
  (svn_diff__tree_processor_create,
  (svn_diff__tree_processor_reverse_create,
  (svn_diff__source_create): Implement these functions using a large number of
    static helper functions.


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