Transaction should has the same life cycle as TxnCtx, so create a new transaction in PrepareTxnCtx if transaction is nil or invalid.
* varsutil: remove dependency on 'types' for 'variable' package 'variable' package will be used in 'types', remove dependency on 'types' by moving functions to a new 'varsutil' package. Also extract 'SetExec' from 'SimpleExec'