-------------
- Conversion from marshmallow to pydantic 2.x (Backward incompatible)
- Use pydantic style model definitions. Model classes still inherit from `Collection` or
`Relation` classes but these classes are now derived from pydantic's `BaseModel` class and
provide some additional functionality related to ORM.
- `Collection._dump` and `Collection._load` methods are removed in favor of already present
pydantic methods for the same tasks. Use `Collection.model_dump` and `Collection(**kwargs)`
for dumping and loading data from models respectively.
- Due to how pydantic works, built-in collection/relation fields `_key`, `_from` and `_to` must
be defined as `key_`, `from_` and `to_` in models. However `property` getters and setters are
present to allow accessing and setting these using the built-in names. See examples for deatils.