Add Connection.inTransaction to wrap queries in a transaction block

There is an unfortunate tension between the desired argument type for this
function in plain Connections (=> Future[A]) and in ConnectionPools (T =>
Future[A]), and so it currently uses a compromise (Connection => Future[A])
which is a bit odd in the former case and too general in the latter.  One
option is to take this function out of Connection and put it on a new
SimpleConnection trait, with a separate function on ConnectionPool.