Make AuthorizedAction.inTransaction().

[finishes #74768334] PROPERLY.

Now AuthorizedAction(...) will do the auth in the database but then drop
the connection. This is vital because it lets us control timing: it
COMMITs and lets us open our own transactions which COMMIT when we want
them to.

We use that in MassUploadController to COMMIT _before_ telling the
worker about the job. That way the worker doesn't look for a job that
hasn't been committed yet.

This is also a step towards a future in which the database is less
all-encompassing. AuthorizedAction will require a database forevermore
because it needs to authenticate, but it won't necessarily need to
_write_ to it or use a transaction. And there's a potential, eventually,
to make auth async.