revokeRecoveryKey
Revokes the user's active recovery key in one atomic step. In this order:
the user never registered a key: RecoveryKeyRevocationResult.NOT_CONFIGURED;
the key is revoked and the revocation with RecoveryKeyRevocationTransition.revocationId revoked it: RecoveryKeyRevocationResult.ALREADY_APPLIED, nothing written;
the key is revoked (by another revocation), or its key or epoch differ from the expected ones, or the authorizing device's registration differs from the expected one: RecoveryKeyRevocationResult.CONFLICT, nothing written;
the epoch is Long.MAX_VALUE: RecoveryKeyRevocationResult.EPOCH_EXHAUSTED;
prunes and claims the nonce as rotateRecoveryKey does: RecoveryKeyRevocationResult.REPLAY;
removes the key, stores epoch + 1, the revocation ID (clearing a rotation ID) and RecoveryKeyRevocationTransition.now as revocation time, and deletes every last-device recovery challenge and the pending reset of the user: RecoveryKeyRevocationResult.REVOKED.