Added a test for what happens when an event that had called speculate
backs out of an object.  Currently causes a hang.
When a root object backs out, we must invalidate all derivative
objects.  This is because we do not want our derivatives to use stale
values of object.
When the root of a speculation is just a read lock holder, we do not
necessarily need ot invalidate derivative objects because they
speculated on top of the actual current value.  But we should promote
the eldest speculative object to root so that it can continue.
Updated speculated interrupted test to ensure that when a read lock
holder is backed out, events that speculated on top of it are not
invalidated.  (See previous commit.)
Forgot to check for exceptions that may have occurred in alternate threads before returning whether passed or failed.
Testing speculatives further.  If have a chain of speculated objects:

a -> b -> c

where a is the root speculative object, b derives from a's value, and c
derives from b's value, then want to ensure that if a is not backed out, but
b is then, b gets removed from chain.

Currently does not pass; it just hangs.  Next series of commits should fix.
Added deadlock prevention invariant to speculative object file: a root
object can try to acquire locks of speculative children while holding
its own.  A speculative child cannot make a call to a root object that
acquires root's lock while holding its own locks.
If have a chain of speculateds:

a -> b -> c

where a is root.  If b is invalidated and b had been a write, now b
asks a to invalidate c.

Note 1: There seems to still be a bug with this logic.  Test case
MiddleInterruptedSpeculater does not pass.

Note 2: Incorrectly handling case where just has one reader.  In those
cases, should remove b and move c to a.