A transactional versioned graph implementation.

Introducing a transactional versioned graph implementation,
This type of graph capable of versioning all changes that occur within the transaction
at once.

As opposed to non transactional graph where every single change is associated
with its own version, in transactional graph, commit versions all modifications
in the transaction with the same version.

Rollback reverts all transaction changes including versioning changes.