Reimplement UTF-8 fuzzy conversion using the tools provided by utf8proc.
While the new implementation is slower and uses more memory than the
original, it also gives somewhat better results (in the author's opinion).
Since fuzzy escaping is only used as a last resort to generate error
messages, the extra cost should not be a problem.

* subversion/include/private/svn_utf_private.h
  (svn_utf__fuzzy_escape): Declare new private function.

* subversion/libsvn_subr/utf8proc.c
  (svn_utf__utf8proc_version): utf8proc_codepoint_valid is no longer unused.
  (unicode_decomposition): New; common driver for utf8proc_decompose.
  (decompose_normalized): Reimplement using unicode_decomposition.
  (svn_utf__fuzzy_escape): Implement.

* subversion/libsvn_subr/utf.c (fuzzy_escape): Removed.
  (convert_to_stringbuf, svn_utf__cstring_from_utf8_fuzzy):
   Use svn_utf__fuzzy_escape.

* subversion/tests/libsvn_subr/utf-test.c
  (test_utf_fuzzy_escape): New test case for svn_utf__fuzzy_escape.
  (test_funcs): Add test_utf_fuzzy_escape.
* subversion/tests/cmdline/merge_tests.py
  (simple_property_merges): Adjust expected output.
* subversion/tests/cmdline/svnadmin_tests.py
  (verify_non_utf8_paths): Likewise.


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