In all cases where we were using `dbMap`, use `dbMap.WithContext()`.
Because of the way Gorp implements contexts, we can't add a context when
opening a transaction, committing it, or rolling it back, but we can add a context
when doing operations within a transaction, using `tx.WithContext()`.
Some functions in SA expected an argument of `gorp.DbMap` or `gorp.Transaction`.
Since Gorp's `WithContext()` functions return a `gorp.SqlExecutor`, those functions
had to be updated. This PR introduces a few local interfaces that define a
subset of methods required from `gorp.SqlExecutor`, which allows more narrowly
defining inputs to functions.