Disallow an exec on a transaction after its been closed
Document the behaviour of db_transaction a little better
Correct method name to send
Attach commit to a callback, don't run it directly after the block runs

I *almost* got it all right.  The problem is that the block passed to
Transaction.new will almost certainly just spawn some deferrables and then
return, which means that the commit will happen before the other queries
run.  This commit fixes that race condition, by moving to commit to happen
after the deferrable completes.