Case-insensitive email lookups

User emails are always stored using the exact case that the user provided when signing up. However, the unique constraint on the users.email database column has been changed to be case-insensitive, so the email addresses alice@example.com and ALICE@example.com cannot both exist in the users table. Looking up a user based on their email address with GetUserByEmail() is also now case-insensitive.