Fix issue #4287 ("svn_ra_replay (and related APIs) HTTP wire protocol
design flaw").

Teach mod_dav_svn to also accept "replay-report" REPORT requests
against a baselined version resource (practically speaking, a revision
resource), which is the correct resource to query about "changes which
occured in this revision".  When the REPORT is aimed at a revision
resource, it should *not* include an embedded revision (that's
redundant at a minimum, and could be conflicting), and it *should*
carry an embedded "include path" (since that path is not represented
in the resource URL).

Teach ra_serf to send such REPORT requests against a revision resource
URL, only falling back to the use of the public session URL when the
server doesn't support the new approach.

* subversion/include/svn_dav.h
  (SVN_DAV_NS_DAV_SVN_REPLAY_REV_RESOURCE): New header #define.

* subversion/libsvn_ra_serf/ra_serf.h
  (svn_ra_serf__session_t): Add 'supports_rev_rsrc_replay' flag.

* subversion/libsvn_ra_serf/options.c
  (capabilities_headers_iterator_callback): If we see the
    SVN_DAV_NS_DAV_SVN_REPLAY_REV_RESOURCE header, set the session
    baton's 'supports_rev_rsrc_replay' flag.

* subversion/libsvn_ra_serf/replay.c
  (replay_context_t): Add 'include_path' member.
  (create_replay_body): If an include path is provided, drop it into
    the REPORT request body, and don't add the revision; otherwise, do
    the reverse for compatibility with old servers.
  (svn_ra_serf__replay_range): Consult the session baton's new flag to
    see if we need to aim the REPORT at a revision resource (which is
    the best option) or fall back to hitting the public resource URL
    of the include path itself (the session URL).

* subversion/mod_dav_svn/reports/replay.c
  (dav_svn__replay_report): Also handle the flavor of this REPORT
    which occurs when it is submitted against a revision resource.

* subversion/mod_dav_svn/version.c
  (get_option): When HTTP0-v2-enabled, include the new
    SVN_DAV_NS_DAV_SVN_REPLAY_REV_RESOURCE header.

* notes/http-and-webdav/webdav-protocol
  Document the existence of, and request syntax of, the
  "replay-report" REPORT.


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