TransactionContext is now Disposable

Since Transaction now implements IDisposable, TransactionContext should
be IDisposable as well to dispose of the Transaction. It also allows
replacing the try / finally with a using statement, eliminating the need
to explicitly close the TransactionContext.