Added a test for read-only speculation.
Added a test harness to test how system works when doing speculation
on read_only state.  In particular, trying to get case where:

  evt reads a speculated version of an obj, obj'.
  Then obj' is promoted to root obj.
  Then evt reads obj.
  Then evt tries to commit.

Concern is that when we promote obj' to obj, we will get two complete
commit requests (one forwarded from obj' to obj and one directly to
obj).  If obj has already cleared the read from its read_lock_holders,
then can get into bad shape because forwarded commit request gets
rolled back.  Seems to work correctly.