On the log-message-templates branch, rework the way log templates
are passed to client API consumers.

Before this change, the template texts were passed as part of the
svn_client_commit_item3_t structure, duplicating the template text
for each item. The API consumer was forced to loop over all commit
items to correlate templates which apply to multiple commit items.
Log message templates were collected during commit harvesting.

Now, the templates are passed as an additional argument to the client's
log message callback (svn_client_get_commit_log4_t). Each template has
associated with it a list of pointers to commit items which the template
applies to. The templates are collected during an extra post-processing
step after commit harvesting and only for consumers of the new API.

* subversion/include/svn_client.h
  (svn_client_commit_item3_t): Remove log_msg_template field.
  (svn_client_get_commit_log4_t): Revision of svn_client_get_commit_log3_t
   which takes a log_message_templates parameter.
  (svn_client_get_commit_log3_t): Deprecate.
  (svn_client_ctx_t): Add log_msg_func4 and log_msg_baton4 and
   deprecate log_msg_func3.

* subversion/libsvn_client/client.h
  (SVN_CLIENT__HAS_LOG_MSG_FUNC): Update for log_msg_func4.

* subversion/libsvn_client/commit_util.c
  (add_committable, harvest_not_present_for_copy, harvest_status_callback,
   handle_descendants): Remove now obsolete support for log message templates.
  (get_log_msg_template): Rename to ...
  (get_log_message_templates): ... this. Return a collection of templates
   which are associated with the commit items they apply to.
  (svn_client__get_log_msg): Collect log message templates if the client API
   user is providing a svn_client_get_commit_log4_t log message function.

* subversion/svn/cl.h
   (svn_cl__get_log_message): This is now an implementation of
    svn_client_get_commit_log4_t.

* subversion/svn/commit-cmd.c
  (svn_cl__commit): Use ctx->log_msg_baton4 instead of ctx->log_msg_baton3.

* subversion/svn/copy-cmd.c
  (svn_cl__copy): Use ctx->log_msg_baton4 instead of ctx->log_msg_baton3.

* subversion/svn/delete-cmd.c
  (svn_cl__delete): Use ctx->log_msg_baton4 instead of ctx->log_msg_baton3. 

* subversion/svn/import-cmd.c
  (svn_cl__import): Use ctx->log_msg_baton4 instead of ctx->log_msg_baton3.

* subversion/svn/mkdir-cmd.c
  (svn_cl__mkdir): Use ctx->log_msg_baton4 instead of ctx->log_msg_baton3. 

* subversion/svn/move-cmd.c
  (svn_cl__move): Use ctx->log_msg_baton4 instead of ctx->log_msg_baton3.

* subversion/svn/propedit-cmd.c
  (svn_cl__propedit): Use ctx->log_msg_baton4 instead of ctx->log_msg_baton3.

* subversion/svn/svn.c
  (sub_main): Use ctx->log_msg_func4 instead of ctx->log_msg_func3.

* subversion/svn/util.c
  (svn_cl__get_log_message): Implement the svn_client_get_commit_log4_t
   interface. Provide the same behaviour as get_log_message_template().
  (get_log_message_template): Remove.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/log-message-templates@1622678 13f79535-47bb-0310-9956-ffa450edef68