Introduce HeapletFactory service support

When a new heap object instance has to be created, we first have to
find a Heaplet instance that will create the required object from the
given JSON configuration.
Heaplet instances are linked to the single object they created: they
manage the heap object lifecycle with the start() and destroy() methods.
The old behaviour was using Heaplet instances directly loaded and
instantiated, meaning that a single Heaplet instance could be used to
create multiple heap objects, somehow mixing states, which was very
wrong.

Now, HeapletFactory (instead of direct Heaplet) are found using the
ServiceLoader discovery mechanism. They are responsible to create new
Heaplet instances, meaning that we cannot anymore share a Heaplet
instance for 2 or more heap objects.

Heaplet class does not extends Indexed<Class> anymore (was only used
because of the way Heaplets was looking for Heaplet instances).
NestedHeaplet is now deprecated since its only duty was to implement the
Indexed interface. All references to NestedHeaplet were replaced to
GenericHeaplet (its parent class) in our code base to avoid ugly
compiler warnings.

As per OPENIG-302 comments, the HeapletFactory will be a short-lived
concept since this additional layer introduction was the straw that broke
the camel's back :)

Issues: OPENIG-302
Reviews: CR-4457

git-svn-id: https://svn.forgerock.org/openig/trunk@555 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
Provide the ability to evaluate JsonValue containing expressions 'in place'.

The previously introduced evaluate() method was a step in the right
direction, allowing resolution of static (no references to ${exchange})
string JsonValue, returning a simple resolved String.
While it works great, it's a shame that we don't benefit anymore of the
JsonValue API, in particular the conversion methods (asURL(), ...).

This fix uses a JsonTransformer to actually resolve any String wrapped
JsonValue and creates a deep copy of the given JsonValue.

git-svn-id: https://svn.forgerock.org/openig/trunk@556 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
Expose new security heap objects (KeyStore, KeyManager and TrustManager)

KeyStore and related security objects are being more and more central
to OpenIG:
 * Used by HttpClient
 * Needed for encryption / decryption

This patch is a first step to provide a way to configure theses as
usual heap objects (through JSON).

KeyStore heap object is an abstraction around the keystore file (either JKS,
PKCS12 or other depending on the platform capabilities).
Specifying a password or not depends on he usage:
 * If KeyStore will be used to read private credentials (through a
   KeyManager for example), a password is required
 * If not (for a TrustManager), no password is required

KeyManager and TrustManager are using a KeyStore heap object and
are used within SSL mechanism (SSLContext) to provide a view on the KeyStore:
 * KeyManager when private credentials access is required.
 * TrustManager when only public information access is required

Issues: OPENIG-295
Reviews: CR-4441

git-svn-id: https://svn.forgerock.org/openig/trunk@557 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
Remove unused HeapletService service declaration

The two referenced service implementations do not exist (anymore ?).
And the service file name was incorrect (no HeapletService interface
exist).

git-svn-id: https://svn.forgerock.org/openig/trunk@558 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
Transform an array of references into objects from the heap

This change eases references resolution when they are provided as a JSON
String array (like ["RefOne", "RefTwo"]).

git-svn-id: https://svn.forgerock.org/openig/trunk@559 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
Use the new KeyManager and TrustManager heap objects in HttpClient

To keep backward compatibility, 'keystone' and 'truststore' are left
unchanged but have been deprecated.
We've added 2 new attributes to specify reference(s) to TrustManager(s)
and KeyManager(s) declared as heap objects.

Issues: OPENIG-305

git-svn-id: https://svn.forgerock.org/openig/trunk@560 dbb9e58e-28e6-4ce0-90e8-f11d9605b710