Add depth support to the 'arbitrary diff' mode of 'svn diff'.

Previously, arbitrary diffs could only be made with depth infinity, which
put arbitrary difff mode at odds with other modes in terms of feature parity.

* subversion/include/private/svn_client_private.h
  (svn_client__arbitrary_nodes_diff): Add DEPTH parameter, adjust docstring.

* subversion/libsvn_client/diff.c
  (do_diff,
   do_diff_summarize): Pass DEPTH to svn_client__arbitrary_nodes_diff().

* subversion/libsvn_client/diff_local.c
  (do_arbitrary_dirs_diff): Add DEPTH parameter, adjust docstring.
  (arbitrary_diff_this_dir): New helper, extract from arbitrary_diff_walker().
   The arbitrary_diff_walker() uses svn_io_dir_walk2() which doesn't support
   depth restriction. This helper function was factored out so that single
   directories can be diffed with distinct levels of depth.
   Use the io walker when diffing with depth infinity, else just use
   arbitrary_diff_this_dir() since we don't need to walk the filesystem.
  (arbitrary_diff_walker): Re-implement as wrapper of arbitrary_diff_this_dir().
  (svn_client__arbitrary_nodes_diff): Add DEPTH parameter. If DEPTH is unknown,
   default to depth infinity.


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