Following up on r1438264, make libsvn_client's repository diff handler drive a
diff processor instead of the old diff callbacks. Provide a state handler for
the merge support handling.

* subversion/libsvn_client/merge.c
  (merge_dir_opened): Suppress further calls afster marking a tree conflict.
     The old processing relied on the tree_conflicted value to imly skip.

* subversion/libsvn_client/repos_diff.c
  (edit_baton): Store processor instead of callbacks.
  (dir_baton,
   file_baton): Keep processor batons and left and right source.

  (get_file_mime_types): Remove now unneeded function.
  (open_root): Initialize left and right source.

  (diff_deleted_file,
   diff_deleted_dir,
   delete_entry,
   add_directory,
   open_directory,
   add_file,
   open_file,
   close_file.
   close_directory): Drive the diff tree processor instead of the callbacks.
     Extract alle notification handling into ...

  (diff_state_handle): ... this new function. (Yes I know this code is ugly!)
  (diff_state_close): New function. Handling directory closure.
  (svn_client__get_diff_editor): Initialize the diff processor.


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