Store application ordering of transactions w/ legacy index changes

Only a single transaction at a time can append to the log buffer, but
multiple transactions can apply changes onto the store simultaneously in
2.2. For graph and schema indexing changes there are the high level
entity locks that guarantee correct ordering of transactions wanting to
change the same records. However for legacy indexes there are no such
ordering. This might result in for example an REMOVE+ADD turning into a
ADD+REMOVE, i.e. two different end results.

So, this commit introduces ordering of transactions making any legacy
index changes so that such transactions gets applied in the same order
as they were appended to the log. Transactions that doesn't change
any legacy indexes will not be ordered like this and will pay no cost
whatsoever for the ordering introduces here.

This commit also adds apply() to NeoCommandHandler such that
CommandApplierFacade can call a round of apply() to all appliers and the
another round of close(). This fixes an issue where store application
locks would be released too soon.
Previously:
  * apply graph changes
  * release graph update locks
  * apply schema index changes
  * apply legacy index changes

Now:
  * apply graph changes
  * apply schema index changes
  * apply legacy index changes
  * release graph update locks
Support for upgrading from 1.9 and 2.0

- added support for reading 1.9 and 2.0 log files
- split PhysicalLogNeoCommandReaderV0 in 2 one for parsing 2.0 comamnds and one for 1.9 commands
Make NullPipe verify that the initial context contains values of type node or relationship in accordance with the given symbol table
Move RepeatRule to the io test package

Also not a todo comment on an important area of the page cache that needs more testing.
Also extract some threading utilities out of the PageCacheTest into a utility class.
Fix a page cache bug when faulting throws

Both the StandardPageCache and the MuninnPageCache had a bug where, if IO on swapping a
page in threw an exception, the page faulting procedure did not properly clean up after
itself.
This left the page caches in inconsistent states, that would eventually lead to
deadlocks.
Make the MuninnPageCacheTests run faster

... by not doing explicit GC when the page cache is closed.
We disable this feature anyway on all platforms but Windows.
Merge pull request #3024 from chrisvest/2.2-flaky-pc-test

Fix a page cache bug when faulting throws
Add information on the version of the used cypher compiler to execution plan descriptions
Renamed compiler versions to more sensible names.

Instead of legacy vs experimental we now call the compilers rule vs cost.
Merge pull request #2953 from tinwelint/2.2-ordered-legacy-index-updates

Store application ordering of transactions w/ legacy index changes
Merge pull request #3022 from boggle/assert-early

NullPipe verifies type of node and rel values in initial context
Merge pull request #2970 from davidegrohmann/2.2-upgrade-from-2.0-and-1.9

Support for upgrading from 1.9 and 2.0
cleanup of page cache stress testing
shorter runs for page cache stress integration tests
added runner for standardpagecache