Add State.set_next_state() to put the state changing behaviour (and its documentation) in a single place
Git rid of User.change() now that we have State.set_next_state()
Change the current state types to use State.set_next_state()