Added a with-transaction macro

I've added a macro which gives the user a much more fine grained control over what to do with the transaction in the body of the macro.

This lets a user execute some statements, manipulate the results, and then do execute more statements based on the results.

You have to specify if you want commit on success behaviour (first argument to the macro). This gives you the flexibility that you can test some statements and you can manually roll them back if you want.

I chose to have the user specify the name of the transaction variable (second argument to the macro). I could have used an anaphoric macro, ie, fixed that variable name by convention to, say `transaction`, but I thought that would be unclean.

Comments welcome.

cheers