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.
(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.