Transaction support for connections

I've added beginTransaction, commit, and rollback functions to the connection.  I've also added transaction state tracking so that calling beginTransaction, commit, and rollback multiple times will not result in additional commands to the database.

The pool's releaseConnection method will now auto-rollback if a transaction has begun but not yet been committed.

Does this align approximately with how you had planned on implementing transactions?  Happy to change anything that needs changing.

Thanks!

Jeff Flitton