Revamp the design of State. We don't need a Map to keep the outgoing and incoming transitions at all.
Revamp constructors of Transition to allow some flexibilities.
Prohibit merging states with different parent regions.