A little more documentation.
Assume we have a derivative chain A -> B -> C, where A is the root.
Then if B gets backed out, if only a single event is holding a read
lock on B and that event got backed out, there's no way that any other
events will reach B.  We could either kill it immediately or just let
A skip over it when it is promoting.  We do the second.
Finally found bug: by setting read lock holders and waiting elements
first, we'd short-circuit our call to insert_in_touched_objs.  Swapped
order.