start method
Start the state machine at the given starting state.
Implementation
void start(State startingState) {
if (_started) throw StateError('Machine has already been started.');
_started = true;
_transition(StateChange._(current, startingState, null));
}