Unpacking of transaction logs occurs right after response deserialization
Fix Muninn memory leak from pool PageCursors

The cursor freelists were anonymous inner classes of the MuninnPagedFile class,
and this meant that they were accidentally strongly referencing the Page
freelist.
This meant that if we made use of thread-local PageCursor pooling, the cursor
freelist would keep all pages alive that could be reached through the page
freelist. And the cursor freelists were kept alive by the cursors, who in turn
was kept alive by thread-local references.
This way, a potentially very large amount of pages could be kept live after the
page cache had been shut down, because threads that had accessed it were still
running.
This was especially a problem for unit tests, since they fork only a few JVMs,
have a main thread that runs all tests, and many tests start and stop database
instances, and thereby also starts and stops page caches.

The fix was to make the cursor freelist classes static, so they no longer hold
a reference to the page freelist. Further more, the page freelist is now also
nulled out when the cache shuts down, even though this isn't strictly
necessary for fixing this issue.
Reenable the advesarial FSA based page cache test

Muninn was already passing it and we don't have the StandardPageCache any more
Simplify the PageCursor pooling

Since we have MuninnPageCursorPools for every PagedFile, and since a thread can
only use a single cursor at a time, per PageCache, without risking deadlocks,
it makes no sense to pool more than a single cursor.

Therefore, this commit drops the freelist concept, so we just have a single
thread-local variable that points to whatever cursor instance has been created.
The PageCache now throws exceptions when used in a thread-unsafe way
Merge pull request #3097 from lutovich/aioob-exception-in-lock-requests

[master] Unpacking of transaction logs occurs right after response deserialization
Merge pull request #3116 from chrisvest/2.2-muninn-cursor-pool-leak

2.2 Fix Muninn memory leak from pool PageCursors
Proper lifecycle of dummy index extension

DummyIndexKernelExtensionFactory pretended to be many things at once, an
extension factory, and extension and an index implementation. It only
implemented one init() method, which registered the index provider, but it
got called three times, once for each "role" it had.
Create an interface for LogEntry
Introduce a wrapper to store the identifier for old log entry version (needed to reorder log entries)
When using the legacy log entry parsers use the wrapper to preserve the identifier info
Create a package for legacy logs related classes
Cleanup LogEntryWriter public methods
Cleanup of StoreMigrationParticipant interface
Fix in v0 command readers
Split LogHeaderParser in LogHeaderReader and LogHeaderWriter
Add support for migrating logs

We introduce a cursor based lazy reader which reads up all the log entry up to the first commit
and then start returning entries which belong to such committed transaction.
Such cursor will return log entries in order wrt transaction id, since commit entries
are always written in the log file in the correct order.
Reenable store upgrade tests from 1.9 and 2.0 in cluster mode