Rework the path library to accept and return "" as the only canonical empty path. Make sure the client canonicalizes all paths passed to the libraries. The path library now assumes that its inputs are canonical. Remove the use of explicit "." except for a few special cases.
* subversion/libsvn_subr/path.c (SVN_EMPTY_PATH, SVN_PATH_IS_EMPTY, SVN_PATH_IS_PLATFORM_EMPTY): New macros.
(SVN_PATH_SEPARATOR): Delete macro as we cannot change the separator. Change all uses in the file to an explicit '/'.
(discount_trailing_dot_slash, is_canonical_nts): New functions.
(svn_path_canonicalize, svn_path_canonicalize_nts): Strip trailing dots as well as slashes, convert "." to "".
(svn_path_join_many): Rework without considering ".".
(add_component_internal): No need to canonicalize.
(svn_path_remove_component, svn_path_remove_component_nts): No need to canonicalize input. After removing component, strip trailing dots and slashes, and convert "." to "".
(svn_path_basename): Convert "." to "".
(svn_path_split): No need to canonicalize input.
(svn_path_get_longest_ancestor): No need to canonicalize inputs.
(svn_path_decompose): Convert "." to "".
(svn_path_split_if_file): Return "" as empty path if input is a directory.
(svn_path_internal_style, svn_path_local_style, svn_path_join, svn_path_is_empty, svn_path_is_empty_nts, svn_path_compare_paths, svn_path_compare_paths_nts, svn_path_is_child, svn_path_is_single_path_component): Change to use new macros, or to use explicit '/', or to assert canonical input.
* subversion/clients/cmdline/util.c (svn_cl__args_to_target_array): Add canonicalization of paths. Move svn_path_basename call after UTF-8 and canonicalization. (svn_cl__edit_externally): Convert "" to "." to satisfy APR.
* subversion/tests/libsvn_subr/path-test.c (SVN_EMPTY_PATH): New macro.
(test_path_split): Remove non-canonical inputs. Add new tests. Test svn_path_split_nts as well.
(test_join, test_basename): Remove non-canonical inputs. Add new tests.
(test_canonicalize): New test.
* subversion/libsvn_subr/io.c (svn_io_remove_dir, svn_io_stat, svn_io_dir_open, apr_dir_is_empty): Convert "" to "." to satisfy APR.