Also added a test for lots of backouts, coupled with speculation.
Minor cleanup.  Safer to use method to check if write lock holder than semi-tortured construction.
Trying to maintain invariant that when there are no write lock
holders, dirty_val is null.  Programmer shouldn't rely on this.  Ie,
should not do check

if (dirty_val != null)

as a substitute for

if (write_lock_holder != null)

Just try to maintain invariant so that it may make debugging easier
(null pointer exceptions when shouldn't be allowed to operate on
dirty_val).
Should check if write lock holder rather than if dirty val is not null (see previous commit).
Adding more comments/documentation while trying to debug.
When call specualte without specifying value to speculate on top of,
will speculate on top of last derived object's internal state.

Note added a FIXME: should investigate whether we need to actually
hold onto speculating_on object's mutex until create derivative
object.
Minor documentation addition.
When we speculate on an object, we can read internal values of
derivative objects.  In these cases, we hold locks on these derived
objects so that no other event can change their internal values out
from under us.