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.

(This is on top of pull request #53.)