Added
- **Breaking change!** Added `AggregateRoot` that aggregate roots need to inherit from,
in addition to Entity; moved domain event logic to AggregateRoot
- `types` module for commonly used types
Changed
- **Breaking change!** `AbstractRepository`'s entity_type class-level keyword argument
now expects the entity to be a subclass of AggregateRoot. Each aggregate root should
have a repository and entities are children of the root entity.
- `BaseUnitOfWork.collect_new_events()` now pops events from `AggregateRoot.events` to
ensure that no event is double-published
Fixed
- Incorrectly instantiated entities in a few tests. Entities in `conftest.py` now
conform to the `AggregateRoot` interface.