Bug fix and performance improvements

Bug: choice pseudo state chooses arbitary transition if multiple valid
transitions are found (as per UML spec).
Perf: seperated completion and regular transitions into seperate
properties on source vertex to reduce transition selection overheads.