Transaction profile flow is now controlled by the Terminal.

Instead of depending on the transaction profile's action() method to do
the right thing, let Terminal drive the flow. The end of transaction is
still under the control of the transaction profile, and hence it's the
transaction profile that sends control back to the Terminal after the
transaction is completed, and think time has elapsed.