When a merge raises conflicts, report the details in a more structured way
up to the libsvn_client top-level function.  At that point we still raise
the same error that we were doing, so there is no major functional change.

There is a minor functional change, which I think is for the better: we will
now do mergeinfo elision regardless of whether conflicts are raised, whereas
previously elision was skipped if conflicts were raised before the final
revision range of the merge.

* subversion/libsvn_client/merge.c
  (conflict_report_t, conflict_report_create, conflict_report_dup): New.
  (make_merge_conflict_error): Take a conflict report object instead of just
    a revision range, and only produce an error if the report indicates a
    conflict in a non-last revision range, to avoid callers all implementing
    that same logic.
  (do_merge): Report conflicts through a new output parameter instead of by
    throwing an error. Do mergeinfo elision regardless of conflicts. Move
    the 'use_sleep' output parameter to before the inputs for consistency.
  (merge_cousins_and_supplement_mergeinfo): The same, and add a result_pool
    in which to allocate the conflict report.
  (merge_locked, merge_reintegrate_locked,
   merge_peg_locked, do_automatic_merge_locked): Turn the conflict report
    into an error here instead.


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