Expose the tunnel management callbacks in JavaHL.

* build.conf (private-built-includes): Add new generated JavaHL headers.

[in subversion/bindings/javahl/src/org/apache/subversion/javahl]
* callback/TunnelAgent.java: New public interface.
* ISVNClient.java, SVNClient.java (ISVNClient.setTunnelAgent): New method.
* remote/RemoteFactory.java
  (RemoteFactory.RemoteFactory): New parameter tunnelAgent.
  (RemoteFactory.setTunnelAgent): New method.
  (RemoteFactory.tunnelAgent): New member.
  (RemoteFactory.open): New parameter tunnelAgent; all callers updated.
* util/TunnelChannel.java, util/RequestChannel.java, util/ResponseChannel.java:
   New private utility classes; implement byte channes for tunnels.

[in subversion/bindings/javahl/native]
* OperationContext.h
  (OperationContext::m_jtunnelcb): New class member.
  (OperationContext::checkTunnel,
   OperationContext::openTunnel,
   OperationContext::closeTUnnel): New static methods.
  (OperationContext::setTunnelCallback,
   OperationContext::getTunnelCallback): New methods.
* OperationContext.cpp
  (OperationContext::OperationContext): Initialise m_jtunnelcb.
  (OperationContext::~OperationContext): Release m_jtunnelcb.
  (OperationContext::checkTunnel, OperationContext::openTunnel,
   OperationContext::closeTUnnel, OperationContext::setTunnelCallback,
   OperationContext::getTunnelCallback): Implement.
  (TunnelContext): New local helper class.
  (create_Channel, create_RequestChannel,
   create_ResponseChannel): new local helper functions.

* ClientContext.h (ClientContext::setTunnelCallback): Override method.
* ClientContext.cpp (ClientContext::ClientContext): Set tunnel callbacks.
  (ClientContext::setTunnelCallback): Implement.

* RemoteSessionContext.h
  (RemoteSessionContext::RemoteSessionContext): New parameter jtunnelcb.
* RemoteSessionContext.cpp
  (RemoteSessionContext::RemoteSessionContext): Update signature and
   set tunnel callbacks.

* RemoteSession.h (RemoteSession::open, RemoteSession::RemoteSession):
   New parameter jtunnelcb.
* RemoteSession.cpp (RemoteSession::open, RemoteSession::RemoteSession):
   Update signature and implementation.
* SVNClient.cpp (SVNClient::openRemoteSession): Pass the tunnel callback
   from the context to the session factory.

* org_apache_subversion_javahl_SVNClient.cpp
  (Java_org_apache_subversion_javahl_SVNClient_setTunnelAgent):
   Implement native method.
* org_apache_subversion_javahl_remote_RemoteFactory.cpp
  (Java_org_apache_subversion_javahl_remote_RemoteFactory_open)
   Update native method.
* org_apache_subversion_javahl_util_TunnelChannel.cpp: New.
   Implementation of TunnelChannel, RequestChannel and ResponseChannel.

* JNIByteArray.h (JNIByteArray::m_abortOnRelease): New member.
  (JNIByteArray::JNIByteArray): New default parameter abortOnRelease.
* JNIByteArray.cpp (JNIByteArray::JNIByteArray): Update constructor.
  (JNIByteArray::~JNIByteArray): Optionally commit array changes.

[in subversion/bindings/javahl/tests/org/apache/subversion/javahl]
* SVNTests.java (SVNTests.DefaultProgressListener): Make protected.
* BasicTests.java (BasicTests.Tunnel): New helper class.
  (BasicTests.testTunnelAgent): New test case for tunnels.
* SVNRemoteTests.java
  (SVNRemoteTests.testSessionGC) Update factory construction.
  (SVNRemoteTests.testGetSession_ConfigConstructor): Likewise.


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