A Finite-State machine implementation

As discussed here: https://github.com/HaxeFlixel/flixel/issues/1072
Allow setting the owner in the constructor

Optional in case of pooling.
Removed locking, added IFlxDestroyable

Removing the lock puts more responsibility to the user, but keeps the
core relatively tidy.
Getter/Setter methods, removed previousState

-A stacked FSM might be the smartest approach, so took down
revertState() functionality.
-Replaced changeState() with a setter method. state = new State()
- Added set() method that lets you set both owner and state at the same
time.
Smarter destroy. One call instead of two.
Removed interfaces.
Merge pull request #72 from volvis/fsm_utility

A Finite-State machine implementation, closes HaxeFlixel/flixel#1072