Split state machine into key and key/value branches

* Add action based state machine
* Fix equability test of providers
* Rename generic parameters
* Add unit tests
Add serialization support for state machines

* Add calls serialization hooks
* Add more unit tests
Add state machine inception
Fix disposing of graphic system
Tweak debug graphics
Fix serialization
Add attribute for optional components

* Use lambda constructors in node lists
* Add unit tests for entity manager
* Clean up
Fix removal of optional components