Added several debugging asserts in AtomicActiveEvent.  There are many methods that presuppose that they are already holding lock when called.  Asserts check to ensure that's true.
Occasionally, we need to wait until an event has completely backed out
of all its touched objects.  As an example, what if this event has
speculated on an object? Then, may request a retry of event before
this event has completely backed out of its touched objects. This can
mean that the retry request begins operating over the speculated value
that this still-backing-out event used. For instance, if an array has
a single element and an event's purpose is to remove from that array,
then the first event will leave the array empty, the retried event
will speculate on this empty array, removing it again. This causes an
out-of-bounds index exception.

This commit was supposed to handle this issue.  Still need to ensure
that it will work for cases where an object initiates backout of
event.