StateMachine est une machine à état.
Les états sont des nombres entiers dont il vous appartient de définir la sémantique.
Cette classe abstraite s'occupe de la queue des états.Elle demande à la classe qui l'implémente si le passage d'un état à l'autre est autoriser. Et appelé le changement d'état dans un thread séparé.
Si une demande de changement d'état à lieu pendant qu'un état est entrain d'être exécuté, alors l'état est mis en file d'attente et sera déclenché dès que l'état en cours ou que l'état le précédent dans la file d'attente sera finis.