REST Transaction implementation for GraphClient

Neo4jClient.GraphClient implements a new interface called
ITransactionalGraphClient that exposes the necessary methods to support
the REST transactions.

There is no need to create multiple GraphClient objects as the Transaction
object is held in a thread static static property.

This commit also includes a refactoring for the execution mechanism as it
was necessary to differentiate policies according if we were in a
transaction scope or not.

REST methods (create, update, etc...) throw InvalidOperationException when
called inside a transaction scope.