New transactionPeriodicallyCommit state

This provides a new option for periodically committing which will commit the user transaction. It is the client's responsibility to detect that the transaction is no longer open, and create a new one.
I could make that change. It wouldn't be too hard. It does mean that their will be a circular dependency between this PR and the client one.