Use FOR UPDATE in info_version

Otherwise transactions don't actually help us. Unfortunately, the two
getOrCreate-style queries are still broken.
Use UNIQUE constraint for getOrCreateUser

Less of a hassle than fighting with transactions. We'll do the same for subs
once we get rid of the NULL, '*' distinction.
Make recipient NOT NULL

I think that was a typo.
Slightly more convenient query logging

Easier to copy-and-paste.
Just use the string '*' to denote wildcards

It does mean it's not possible to subscribe to a literal wildcard, but this is
true in Zephyr too. Using NULL was adding all kinds of complexity for little
gain, especially with MySQL's messed up handling of it.
Dramatically simplify inserting new subscriptions

Now that we can actually use UNIQUE constraints.