Graph: Add start/endTransaction API

Will allow journal to group changes more sanely.
Journal: Implement transactions

This gives more meaningful revision numbers:
All initial state belong to revision 0,
all changes from a single API call like .removeNode (incl. iip/edge removal),
and API consumers can manually create transactions and attach metadata there.