Move command handling to aggregates

Aggregates reference a state, handle commands, and raise events.
Aggregate hold minimal necessary state and apply events.