Minor refactoring organizing tests and finalising the core
More refactoring and testing. Removing the StateMachine annotation, because we
might want controller to be specified when instantiating the class, not in
the definition itself
And adding some nice classes, because otherwiese it doesn't compile
Modifying the lock mechanism to the javase5 concurrent package approach. It
allows us to implement a more fair approach