Read-only mode

The database supports a read-only mode which can be used during upgrades or for failover/verification.

Read-only mode is separate from restore mode - restore mode generally disables tasks that have external effects or trigger modifications, but does not block updates to the database itself.

Read-only mode works at the HareScript level and is checked at work begin and commit. Direct connections to the database can still modify it.

To enter read-only mode: `wh db setserver readonly`

To exit read-only mode: `wh db setserver readwrite`

Effects of readonly mode

`GetPrimary()->BeginWork()` will throw immediately. You can check %IsDatabaseReadonly to help prevent this situation, but to handle this in a race-free manner you need to properly handle the %DatabaseReadonlyException 

`ScreenBase::BeginWork` will work, but Finish will report that the database is in readonly mode and fail (Similar to deadlock/unique constraint violations that aren't caught until Finish)