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
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
ensure page cache stress integration tests can run at reasonable memory sizes
first draft new cypher introduction
minor fixes to cypher intro
Merging updates from MH, with some fixes applied.
cypher-intro almost done
Wrapping up merge.
cypher intro: load csv, programmatic use, additional data
Some tweaks to the load csv and programmatic use parts.
Creating an initial structure.
Split into multiple pages.