Have check_voucher_code() return status codes rather than raising exceptions, so we can interpret them on the login page when trying to claim emailed BTC.
Check that an emailed claim code is valid immediately upon seeing it, rather than letting the user create a new account only to find the code is dead.