Rollback when a workunit ends without committing.
Have iterators share the same session as the updates in the OperationContext.  This relies on a WiredTiger change so that cursors are not reset when updates are committed.
Use WiredTigerSession and WiredTigerCursor consistently to avoid leaks.  Implement the maximum index key size check.  Remove assertions that record store iterators start at zero and aren't tailable.
Wrap WiredTigerSessions in shared_ptr in iterators: MongoDB doesn't guarantee cursors are closed before the OperationContext that was used to open them.