Copy overlapping completed transactions during rotation.

During rotation we copy transactions that have not completed to the next
log. We also copy transactions that finished after the start of the
first incomplete transaction. In some cases the transaction that
finished after the start of the first incomplete transaction was started
before the start of the first incomplete transaction, in these cases the
body of that transaction needs to be found and extracted from earlier in
the log. This code path was not properly exercised in tests, and did not
work. This change fixes that code path and adds testing for it.

Furthermore this test changes the naming in the code for copying these
partial transactions, so that it is possible to understand what the code
does from the names of classes, fields, and methods.

The fix consists of making the cursor creation in LogExtractor only request what it needs from the LogBuffer it gets passed instead of requesting a complete StoreChannel, in order to support InMemoryLogBuffer, which is what this code path does.