[core] Errors can be created with a 'cause'

  * Also, constructors are now public.
[backend-jvstm-common] Support nesting (by default)

  * Revise `withTransaction(CallableWithoutException)`
      * Allow any unchecked exceptions to pass through
      * Throw an error wrapping any unexpected checked exception
  * Reprogram standard `withTransaction`.
  * Add NonPersistent* transactions that support nesting by default.  These
    transaction classes, mimic the ones in JVSTM.
  * JVSTMTransactionManager correctly deals with WriteOnReadException (and
    converts it to WriteOnReadError).
  * Rename GenericTransaction to PersistentTransaction (also for the ReadOnly
    subclass).
  * Enable configuration of TransactionFactory during initialization of
    JVSTMBackEnd (via method redefinition).
  * Eliminate TransactionSupport class.
  * JVSTMTransaction supports a parent.  This is taken into account when
    managing the transaction's lifecycle in the JVSTMTransactionManager.
  * Renamed: FenixTransaction iface -> JvstmInFenixTransaction
  * Created: StatisticsCapableTransaction interface (extends previous)
  * Persistent transactions are StatisticsCapable (retains existing
    behavior). NonPersistent are not (by choice).
[test-backend-jvstm-common] Add NestingTest
Merge pull request #101 from smmf/feature/jvstm-common-support-nesting

Feature/Add nesting support to the backend-jvstm-common