Move Aggregate "Apply" into state objects.

This is to separate logic into multiple classes. "Aggregates" create
events. "AggregateStates" apply those events to a logical object.