New states for transitioning to Withdrawn or Aborted

Sent this version out for review
refactor and update dot figure of state machine
Merge pull request #1 from mark-burnett/states-for-additional-error-handling

refactor and update dot figure of state machine
initial commit of the new state machine
extract method to define properties in some specific class
Make sure the package list goes into the correct package
add test for a state machine with a fork
make the error message more explicit about what is going on
test a looping state machine
Throw an exception if the same state or event is defined twice
add tests for expected exceptions