Upgrade Consistency checker for 2.0

This is a combination of 7 commits.

-- The first commit's message is: (60108b5531ee541f5b96d86f0bdf5515c621282b)

Consistency checking for node labels.

Add test for existing label token store check.
Renamed some existing classes and test infrastructure to reduce confusion.
Check inline label ids.
Check for duplicate labels on the same node.
Check for references to not-in-use label token records.
Check dynamic label ids.
Verify that dynamic label records are inUse and cycle-free.
Encapsulate record allocation into DynamicRecordAllocator interface.
Allow tests to reproduce array store layout without needing a real store.
Restructure NodeLabelRecordLogic:
o Use polymorphism to remove repetitive conditional logic.
o Reduce coupling between field format and NodeStore
o Extract label array manipulation into LabelIdArray utility.

-- This is the 2nd commit message: (e9e8d10de26620e4ad9acb883974cbe9782be53f)

Consistency check: make store skipping safer.

Only skip stores that will ultimately be covered.
Simplify inheritance hierarchy and remove implicit coupling
  between caching and non-caching implementations to DiffRecordAccess.

-- This is the 3rd commit message: (04b87d3c682318ad2668ac3a2109ab157a6974d9)

Dynamic record manipulation.

Reduce duplication in AbstractDynamicStore.
Extract DynamicRecordAllocator into its own file.
Introduce test for ExistingThenNewRecordAllocator.

-- This is the 4th commit message: (925693e7bf9e329c10fd72ecca793789c71b5c65)

Enable consistency checking of schema store.

So far only checking integrity of dynamic record chains.

-- This is the 5th commit message: (e42ccab9e5d434098a8c97a17d841261c5f3f294)

Implements some consistency checking for schema rules

o Check labels referred to by schema rules.
o Add SchemaRecord checking to DynamicRecordCheckTest.

Conflicts when cherry picking:
	community/kernel/src/main/java/org/neo4j/kernel/impl/api/Kernel.java

-- This is the 6th commit message: (d77bda9e17187d858b656e235815f594ce5d1e79)

Add further consistency checking of schema rules

o Verify rules are deserializable
o Verify rule uses known and valid kind
o Verify referenced labels
o Verify referenced property key tokens
o Introduce MalformedSchemaRuleException
o Verify that rule obligations match up
o Introduce SchemaRuleContent for semantically comparing schema rules
o Verify that the schema doesn't contain rules with the same content
o Properly handle ConstraintIndexRules without an owning constraint

-- This is the 7th commit message: (dcd418945965751ac4fd1fd06ca1c2ae570607a3)

Add support for consistency checking of schema rules to incremental checker

o The checking of schema rules is done through a full check of the schema store.
o Introduce SchemaRuleAccess interface for loading of schema rules.
o Introduce AbstractRecordStore<R> between AbstractStore and its descendants (except NeoStore).
o Added RecordSore.getRecords(id) and RecordStore.getNextRecordReference(id).