[dml-compiler] Added JsonElement to the Builtin Value Types

  * Also using Gson 2.2.4 (bug fix release)
  * See #158
[core-api] Externalization.externalizeObject now supports externalizing JsonElements

  * This allows Backends which rely on externalizeObject to persist data (such
    as Infinispan and OGM)
  * See #158
[jvstm-ojb] Added Support for the new JsonElement Value Type

  * See #158
[core-api] Added Utility Class to convert to/from JsonElements

  * Closes #159
[core-api] Added Tests for JsonConverter
[dml-code-generator] Complex Value Types now externalize to Json

  * Closes #165
[jvstm-ojb] Refactor: Now supporting complex ValueTypes

  * The backend now knows that complex Value Types are serialized to JsonElements,
    and as such, knows that the SQL type for them is that of the JsonElement.
  * Instead of doing manual [de]serialization of ValueTypes, the generated code
    now delegates that responsability to the ValueTypeSerializer
  * Closes #166
Merge pull request #167 from jcarvalho/feature/json-element

Adding Json Support to the Framework
[core-api] JsonConverter is now also able to convert Enums
Fix sequential consistency bug in the BPlusTrees
Fix indentation
Revert "Fix indentation"

This reverts commit 1df30f67239538cc070854e7acd9663edb5b6cdf.
Revert "Fix sequential consistency bug in the BPlusTrees"

This reverts commit 0503925ffe003c9013a9e806d2e39868b785933e.
Add comment to fixLeafNodeArraysListAfterSplit noting the use of bidirectional relation semantics
Merge pull request #169 from smmf/feature/restore-eae5c807e9fd531a2d9dc4eb7d55e34fba2d87be

Feature/restore eae5c807e9fd531a2d9dc4eb7d55e34fba2d87be
Implement Repository.reloadAttributeSingleVersion for jvstm-datagrid and jvstm-ispn
Bugfix: Use notLoadedBody instead of NOT_LOADED_BODY

  * There was a bug when using StandaloneVBoxes.  The NOT_LOADED_BODY was
    being used to put null in its 'value', when an unexisting StandaloneVBox
    was requested.  This was so that 'null' could be returned to the
    programmer without ever creating that box.  This is ok, because if a
    commit ever occurs to this box, it is correctly applied in front on this.
    However, the problem was that, because the NOT_LOADED_BODY was shared
    (!!!) when we set null in this body we were destroying all other uses of
    the NOT_LOADED_BODY.  The downside to the current solution, is that the
    instance is no longer shared, so it's memory space isn't saved.  Later, we
    may want to improve this.
Clarify the difference between a loaded body and a valid body

  * A valid body is any body that either is not null or is not the special
    body with version=0 and value=NOT_LOADED_VALUE.  A loaded body is a body
    whose value is not NOT_LOADED_VALUE regardless of the version.
Add single body reload feature to vbox (reload + new API for Repository)
[jvstm-lf] Replace recursive with iterative loadVersionsInRange

  * Prevents StackOverflowException

  * Also Rename DataVersionHolder to DataHolder (versions were no longer being
    kept there)