Prevents duplicate loading node relationships for created nodes

by putting a node "reservation" in the cache at the time of creating it.
This behaviour existed in 2.1 as well, but there the real node object was
put in the cache so that others could access it before the transaction got
committed. The committer will cache in the reservation, converting it to a
normal NodeImpl cached object and fill it.

Now, having the node reservations in place, readers can see that and treat
such as non-existent nodes. This prevents a race between a committer and a
reader both loading relationships of a newly created node and putting them
in the cache, yielding duplicate relationships in the cache.

Validator for this fix has been flaky org.neo4j.cypher.MergeConcurrencyIT
Test for node reservation logic

where node reservations are put in cache up front, at the time of creating
the nodes in the user transaction.
Merge pull request #2843 from tinwelint/2.2-placeholder-node-cache

Prevents duplicate loading node relationships for created nodes