-------------------
- Replaced SQLProvider with SQLAlchemyAsyncSQLDatabase. SQLProvider still exists,
but is the baseclass of several implemenations. Another implementation is
AsyncpgSQLDatase; this imlementation removes overhead from SQL query execution
and prevents the use of greenlets, but it also adds overhead because query
compilation isn't cached.
- Added a 'has_related' subclass argument to SQLGateway, which should be used whenever
a gateway contains nested (related) gateways.
- Added SyncSQLProvider and a (partial) implementation SQLAlchemySyncSQLDatabase.
- Don't do any access logging if the access_logger_gateway is not provided
to clean_python.fastapi.Service.
- Pinned dependencies for better guarantees of clean-python tests.
- Removed Python 3.8 and 3.9 tests, added Python 3.12 tests.
- Added ProfyleMiddleware.
- Reverted to the old 'optimistic' concurrency control in Repository.update. This
can be switched to 'pessimistic' by using a keyword argument.