A utility class for running a sequence of actions under a new transaction in another thread. A newly created {@code Runner} starts athread and a new transaction. It passes the transaction to the initial action, using {@link TxnCallable#setTransaction}, so that the action can use it as part of its operations. When the runner is done running the first action, it then waits for additional actions to be specified with calls to {@link #setAction}, or until the transaction and thread are ended by calling {@link #commit} or {@link #abort}.
Callers can use the {@link #blocked}, {@link #assertBlocked}, or {@link #getResult} methods to interrogate the state of the runner's activitiesfrom another thread.