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.
Merge pull request #1806 from tinwelint/2.0-readonly-tx-no-writing

Neo data source gets enlisted the first write operation
Moves relationship access out of the LegacyKernelOperations.

 o Still delegates to old implementation, but this is now done through the correct call paths.
 o Locking has been moved to the Kernel locking layer.
 o Obviates the need for NodeLookup#lookup(), which has thus been removed.
 o Obviates the need for the lock that could be passed to getNodeForProxy, which has been removed.
 o Deleted relationships are now filtered out in StateHandlingStatementOperations.
 o Use primitive iterator on the low levels for rels