Handle email send errors
Add timeout when sending emails, and catch SMTPLib errors when necessary to display an error message. When possible, it also continues the transaction (e.g. when creating a user), but notifies the email wasn't sent.
Previously, when failing to send an email, the transaction would never end, meaning the Database would be in a locked state, and the browser would end up timing out by itself.