Change the JavaHL class cache to load (most) classes on demand instead of
loading all of them when the library is loaded.

[in subversion/bindings/javahl/native]
* jniwrapper/jni_object.hpp
  (Java::Object): Change the class to use the Pimpl pattern. All derived
   classes will define a (private) implementation class derivec from
   Java::Object::ClassImpl.
  (Java::Object::set_this): New; allows derived classes to set the
   JNI "this" object reference in constructors after the Java::Object
   has been iniitalized and the pimpl is valid.
  (Java::ClassCache): Use the Pimpl pattern so that Object-derived
   implementation classes can remain private.
  (Java::Class): Do not derive from Java::Object.
* jniwrapper/jni_string.hpp
  (Java::String): Do not derive from Java::Object.
* jniwrapper/jni_exception.hpp
  (Java::Exception): Do not derive from Java::Object.
* jniwrapper/jni_class_cache.cpp: Include apr_atomic.h.
  (ClassImplPtr): Uniqoe-ownership smart pointer for
   Java::Object::ClassImpl that implements atomic access
   to the underlying native pointer.
  (Java::ClassCacheImpl): The implementation class for
   Java::ClassCache. Stores lazily-initialized pointers
   to the various Object-derived implementation classes,
   except: Java::Object, Java::Class, Java::Exception and
   Java::String, which are initialized when the library
   is loaded.
  (Java::ClassCache): Reimplement the whole shebang;
   objects of this type are no longer created, instead,
   it creates a Java::ClassCacheImpl on library load and
   destroys it when the library is unloaded.

* AuthnCallback.hpp, AuthnCallback.cpp,
  EditorCallbacks.hpp, EditorCallbacks.cpp,
  ExternalItem.hpp, ExternalItem.cpp,
  Prompter.cpp, SubversionException.hpp,
  jniwrapper/jni_base.cpp,
  jniwrapper/jni_channel.hpp, jniwrapper/jni_channel.cpp,
  jniwrapper/jni_io_stream.hpp, jniwrapper/jni_io_stream.cpp,
  jniwrapper/jni_list.hpp, jniwrapper/jni_list.cpp,
  jniwrapper/jni_string_map.hpp, jniwrapper/jni_string_map.cpp:
   Reimplement Object-derived classes to the Pimpl pattern
   and update all uses.


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