Fixes #94 : Make sure we replace rows in specific tables

These include accountResetTokens, passwordChangeTokens and
passwordForgotTokens. All should only have one row per account.
Declare exit handlers for SPs with transactions

We also need to resignal the error back to the client since
otherwise the ROLLBACK consumes/masks the error and the client
thinks everything was okay.
Add tests to make sure accountResetTokens are replaced

In some cases (createAccountResetToken() and forgotPasswordVerified())
we need to make sure the accountResetToken is replaced, not just have
a new one added. These tests will help implementations for backends.