Adds SystemStateMachine classes and tests

Here is my attempt at a SystemStateMachine.

It is pretty much a copy and paste job from the EntityStateMachine, apart from removing the withType and adding a withPriority to the Mapping class

I have put all the classes in the fsm package along side the EntityStateMachine.

I've added it to my current project and it works (so far)

Because is it very similar to the EntityStateMachine, there is probably an opportunity to extract code into shared classes. Unless it is done very well, I think that could be potentially messy.

Anyhow, over to you :)

cheers