Move UserStateData into its own module, renamed to StateData
Support StateData and State objects in StateData.is
Remove translate step happening in InteractionMachine.switch_state (I think it should have disappeared when we changed State to control when translation happens, but was forgotten)
Change InteractionMachine state event emit methods to be more uniform
Change StateData to handle internally used state creator opts
Make the creator_opts workaround we do in AppStates.create() more explicit
Add StateResumeEvent (along with slightly better documenting of state events)
Add state resume event emitting to the im
Change the way states change to the next state using im.next_state
Change InteractionMachine to switch between states in a more sensible way
Minor clean up for im.switch_state
Fix im.switch_state (broke in previous cleanup commit)
Add an interaction machine test to make sure state lifecycle events are emitted sensibly
Remove unnecessary whitespace
Add message contents to interaction machine state lifecyle events test
Rename im.set_new_state to im.create_and_set_state
Change im.set_state() to accept null
Documentation fixes
Use set_state in im.exit_state
Handle cases where im.resume_state gets a different state back from create_and_set_state to the request state