Add a event system that has a queue and fans out to subscriber inboxes
Move component state to the :state key
Fix ces tests
Add inbox to default args to a component function. Make entity-id the first arg to component functions
Component functions not take an options hashmap. Format fn can be passed in to transform the output of the wrapped component function.
Refactor mk-component-fn to emit events. Components now return updated game state instead of just component state
Add a test for a component-fn that emits events
Fix wrong args to mk-component-state
Use iter-fns instead of deep-merge for system functions
Fix test of msg->subscribers
Decouple rendering movement from controllable component using events
Make the event subscriptions consistent with event-id -> component-id -> entity-id ordering of args and state