Refactored code so that speculation test can push more than two events into the system for one pipeline stage at a time.
Refactored speculation test.  Want to allow performing mixtures of
interrupted and non-interrupted speculation.
Refactoring speculation test to reuse same methods for both mixed and unmixed speculation pipelines.
Explicitly calculating how long a speculative action should take to
commit.  Also, testing when have mixes of events that produce
interrupts and events that do not.
Added new permuations for interruption ordering.
Bug with previous version: if a speculative object has handled an
event in the past, we want to continue to allow it to handle that
event (eg., to serve get_vals for it).  Previous version only allowed
root to continue to serve value, instead of all speculators.  Note
that this current approach produces a hang in one of the test cases.