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.
The rest of this can be replaced by `valueOf(name)`, module case-normalization.