Update to Kotlin 1.9.0 and migrate to newer language idioms.
- Remove unnecessary @OptIn for features migrated to mainstream
- Use `data object` where appropriate
- Use new enum `entries` property
* Show better errors with notification loading fails
The errors are returned as a JSON object, parse it, and show the error
message it contains.
Handle the cases where there might be no error message, or the JSON may be
malformed.
Add tests.
Fixes#3445
* Lint