Journal: Allow to pass start/end revisions to toPrettyString()
Journal: Allow metadata for initial transaction on construction
Graph: Add missing transaction end to addOutPort
Graph: Emit on addGroup() and removeGroup()
Graph: Use setProperties() in loadJSON()
Graph: Also emit before state on change{Node,Edge,*Port,Properties}

This is required to have invertible operations in the graph journal.
Journal: Clone entries before storing

Avoid issues where someone holds a reference to an object
in the journal and modifies it. Would happen with metadata.
Graph: Also send port name for changeInport/Outport

Note: this is an API incompatible change, but only to unreleased API.
Needed in journal to have enough info to call set*PortMetadata() for undo/replay.
Graph: Allow to set/reset metadata entries

Needed to make metadata additions invertible.
Journal: Also follow property,metadata,port changes
Merge pull request #141 from jonnor/graph-journal-metadata

Journal graph metadata