Case-insensitive string matching for MySQL and PG

The last mile for MySQL support. Also adds `Thredded.user_name_column` configuration variable.

---

On MySQL text columns are case-insensitive.
On PostgreSQL, they are case-sensitive by default.
Since we're not handling an exception and passing it up (instead originating an exception from here) could you use `fail` instead of `raise`?