Found several bugs contributing to travis failures. In particular,
we weren't previously deleting write intents aggressively, but once
that was enabled, it exposed a new bug where we weren't keeping a higher
epoch when ending a transaction. Fixed that bug and added a unittest.

Further, discovered that the enumeration of isolation types was
incorrect except for the case of enumerating both isolations. For just
one, it would stupidly do all four--this was slowing the tests down.
We can now run race on the correctness tests.

Finally, reorg'd the code in the correctness test so it makes a little
more logical sense in terms of layout. This shows as a big change, but
really nothing changed.