OPENIG-311 OPENIG-316 (CR-4524) Support inlined declaration in the JSON configuration

Inline object declarations are a mean to ease understanding of
Exchange processing.
They permit to describe anonymously, inner objects when a reference to
another heap object is required. That introduce, in the configuration
files, some hierarchical support, easing the user to mentally
represents his processing chain.

This is done in a fully backward compatible way, without requiring any
changes to existing object declarations (the one that requires other
objects through references or names).

The idea is to automatically extract inline declaration when the Heaplet
is calling the get***Object() methods: if the provided JsonValue is a
String, traditional object lookup is performed, but when the JsonValue
represents a JSONObject (a Map), we try to turn this into a normal
object declaration (just like what is done during heap initialisation).
If the given JsonValue does not describe a valid declaration, a
JsonValueException is thrown (again, just like the heap init process
is doing).

Notice that inline declarations do not require a 'name' attribute to
be specified (like anonymous Java classes), so we generate a unique name
based on the JsonPointer (represents the location of the node in
the JSON structure).

Notice that OPENIG-316 is partly resolved in this commit: HeapUtil methods
have only been moved into the Heap interface: no additional type safety,
no renaming.

git-svn-id: https://svn.forgerock.org/openig/trunk@571 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
OPENIG-316 (CR-4524) Improve Heap interface usability

Heap.get(String):Object gains type safety

    Heap.get(String, Class<T>):T

Heap.getRequiredObject(JsonValue, Class<T>) has a shorter name

    Heap.resolve(JsonValue, Class<T>):T

Heap.getObject(JsonValue, Class<T>) is replaced by a resolve
variant that supports optional dependencies:

    Heap.resolve(JsonValue, Class<T>, boolean):T

git-svn-id: https://svn.forgerock.org/openig/trunk@572 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
Fix location of default-config.json

It was misplaced in the openig-core module where it was used in openig-war module.

git-svn-id: https://svn.forgerock.org/openig/trunk@573 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
Simplify default configuration with the help of inline declarations

git-svn-id: https://svn.forgerock.org/openig/trunk@574 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
Fix link to download page

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