Moves status codes into kernel.

 o Each kernel exception now has an associated status code.
 o The transactional endpoint attempts to unwrap kernel exceptions and
   return their status codes. This resolves an outstanding issue with
   constraint violation error messages.
 o Remaining: Cypher exceptions should map to status codes as well,
   obviating the need to the complex exception mapper in transactional
   endpoint.
Moved API level usage of internal class GraphDatabaseAPI into internals.
Merge pull request #1808 from jakewins/jmx-remove-deprecated

Moved API level usage of internal class GraphDatabaseAPI into internals.
Merge pull request #1805 from jakewins/statuscode-kernel

Moves status codes into kernel.
Use internal heirarchy for types

Replaces the scala-based heirarchy and introduces static vals for
all types, prefixed by CT (Cypher Type)

Reverses the directionality of the heirarchy: now treats Any as
the super type ("up" in the heirarchy). This aligns with the
definition in most other languages.

Renames iteratedType on AnyType to legacyIteratedType
(uses innerType on CollectionType)
Make SubGraphExporter always output numbers with English locale
Neo data source gets enlisted the first write operation

instead of as of recently changed: to enlist on first read OR write
operation in a transaction. The problem with that was that even pure read
transaction had to write log entries in both the txlog as well as the
logical log for the resource itself which both would cause unnecessary
performance and contention problem around those logs.

This is alleviated by introducing the ability to
create a transaction but without (in XA resource terms) starting it.
PersistenceManager gives access to a ResourceHolder instead of the
NeoStoreTransaction (previously known as WriteTransaction) directly so
that in order to access to NeoStoreTransaction from the holder a decision
has to be made whether it's for reading or writing. The first write operation
will enlist the neostore resource on the transaction where the resource
gets started and start log entries are written in the appropriate logs.

Before the state where the resource is enlisted on the transaction the
NeoStoreTransaction instance is still there and functional for read
operations. This has the benefits that no log entries in any log
has been written about its existence.

The ResourceHolder also pulls in some other things that previously also
had leaked into NeoStoreTransaction.