Release 2.9.0

### Added

- Add a new configuration `PICTURE_PROCESS_NB_RETRIES` to tell the number of times a job will be retried if there is a `RecoverableProcessException` during process (like if the blurring api is not reachable). Defaults to 5 like before.
- Add a way to search on semantic tags in `/api/search` endpoint with a CQL2 filter like `filter="semantics.some_key"='some_value'`.
- Add a `API_REGISTRATION_IS_OPEN` setting in the API to tell the federation that account can (or not) be created directly on the instance. Defaults to `false`.
- Added field `geovisio:rank_in_collection` to pictures metadata to get the rank of the picture in the collection in `/api/collections/:cid/items/:id` / `/api/collections/:cid/items` and `/api/search` responses. This makes it easier to use the `startAfterRank` parameter to paginate through pictures in collections..
- Handle semantics returned by the blurring API, and automatically add annotations on the pictures with semantic tags on the detected objects..

### Fixed

- Fix the pagination links when many sequences had the exact same creation date on `/api/collections`.
- Migration `20240409_01_jnhra-pictures-grid.sql` was not working from empty database.
- When asking for collections list as CSV format, API was sending `Content-Type: text/html` instead of `text/csv` in response.
- Fix a sql error on `/api/users/me/collection` when using PostgreSQL <= 13.
- Fix a bug causing a 500 when filtering collections with no updates
- Fix a bug where the collection geometry was not recomputed after a sort.

### Changed

- Change the way the coefficients are computed for the grid, compute the mean only over squares with flat (or 360°) pictures.
- Update lot of dependencies (Flask, psycopg, pillow, sentry, ...)