Added
- The following exceptions: `ValidationError`, `PersistencyDirectoryNotFoundError`,
`InterfaceFileNotFoundError`, `InterfaceFileDecodeError`, `InterfaceNotFoundError`,
`JWTGenerationError`.
- Persistency support for properties. Server and device properties values are now stored in
non volatile memory.
- The new `AstarteDatabase` abstract class has been created. This class can be derived to provide
a custom database implementation for caching Astarte properties.
- An optional `database` parameter has been added to the constructor of the `Device`
class. It can be used to pass a custom database implementation that will be used
to cache properties.
If no custom database is specified, a native SQLite database will be used to store the
properties in a subdirectory of the `persistency_dir`.
Fixed
- Sending zero payloads for endpoints in property interfaces was unsetting the property.
Removed
- Drop support for Python 3.7.