Fix bug with precision loss on indexing large numbers.

The problem was that we always coerced numbers to doubles, when encoding
their value in the index. This means that the loss of precision could cause
large long values that was sufficiently close together, to coerce to the
same indexed values. When this happened, index lookups would return
incorrect results by finding too much data, and constraints would be overly
restrictive. This has been fixed by double-checking the actual values in
the store, and filter out non-exact matches.

We could have alternatively changed the way that we store numbers in the
indexes, however, this would have introduced a store format change. We
decided against this solution since we just had a bunch of store format
changes in 2.0, and we did not want to burden our users with another one
in a bug-fix/patch release.

- When the DeferredConstraintVerificationUniqueLuceneIndexPopulator finds
  a collision in the index, it now looks up the actual value from the store,
  and double checks that the values are actually colliding, before claiming
  that a duplicate entry has been found.
- The UniqueInMemoryIndex does a similar thing.
- To help the indexes do lookups in the store, they are now being given a so
  called PropertyAccessor, which is implemented by the NeoStoreIndexStoreView
  class, which is provided by the IndexPopulatingJob.
- IndexPopulators are now given an IndexDescriptor for the index they are
  populating, so that they can get at the propertyKeyId for doing their
  property lookups throught the PropertyAccessor.
- The equality semantics of BooleanArrayProperty has been changed to be more
  similar with the other array property types. This was important because
  empty arrays are always equal to other empty arrays, regardless of the
  component type.
- The ListBasedIndex (an InMemoryIndex implementation type) is now gone, and
  the HashBasedIndex is now the default InMemoryIndex implementation, because
  it was easier to implement the new verifyDeferredConstraints method using
  the HashBasedIndex.
- ArrayEncoder no longer needs the ability to decode indexed values, because we
  now read the real values from the store.
- The SchemaProviderApprovalTests that already existed for indexes have been
  duplicated and modified so we now also verify the behaviour of constraints.
- The index look-up mechanisms have been streamlined throughout the DiskLayer,
  CacheLayer and StateHandlingStatementOperations.
- ConstraintEnforcingEntityOperations is virtually untouched by these changes.
- Tons of tests have been updated to match and verify these new behaviours.
- IndexUpdaterSupport has been deleted and its functionality inlined into the
  few tests that were using it.
Handle concurrent store copy and logical log pruning

o Previously a FileNotFoundException got thrown on a logical
  log file which gets pruned due to log rotation half way
  through a store copy.
o Check logical logs exist before attempting to copy them. If
  they don't exist then it shouldn't matter because they will
  be old ones anyway
o Split up NeoStoreFileListing to return logical logs and
  store files separately. This means there's a double pass of
  the files on FS so will add a benchmark to check this isn't
  detrimental
Revert "Initial work on listing rels for a node via kernel API."

This reverts commit 81d75c3419560abea0e6333e43341168f31ff218.
Completes the change where FileLock throws IOException or returns an instance, i.e. stops using null for failure signal

(cherry picked from commit 0a5eb2aba58c9caf5061d88d20818157011a9add)

Conflicts:
	community/kernel/src/main/java/org/neo4j/kernel/impl/nioneo/store/CommonAbstractStore.java
	community/kernel/src/test/java/org/neo4j/kernel/StoreLockerTest.java
	community/kernel/src/test/java/org/neo4j/kernel/impl/nioneo/store/TestOsSpecificLocks.java
	community/kernel/src/test/java/org/neo4j/unsafe/batchinsert/BatchInserterImplTest.java
	enterprise/cluster/src/test/java/org/neo4j/cluster/protocol/heartbeat/HeartbeatContextTest.java
	enterprise/cluster/src/test/java/org/neo4j/cluster/protocol/heartbeat/HeartbeatStateTest.java
	enterprise/ha/src/test/java/org/neo4j/kernel/ha/cluster/HighAvailabilityModeSwitcherTest.java
Gets rid of even some more null handling for FileLock

which is nowadays unnecessary. Also throws the expected IOException,
instead of an IllegalArgumentException if the lock couldn't be had from
the FileChannel. May bad, introduced in
0a5eb2aba58c9caf5061d88d20818157011a9add.

(cherry picked from commit e9d762bacf0d3d5c355069e25efdff09d2d68c29)

Conflicts:
	community/kernel/src/main/java/org/neo4j/kernel/impl/nioneo/store/FileLock.java
Cope with version check of very short store files.

Fixes a bug where the server would be unable to start if specific store files were
very short and where the database had not been shutdown cleanly.

(cherry picked from commit 44c3e320330ecd71b687268c35ea7b436b553fbb)

Conflicts:
	community/kernel/src/main/java/org/neo4j/kernel/impl/nioneo/store/StoreFactory.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/CurrentDatabase.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/UpgradableDatabase.java
	community/kernel/src/test/java/org/neo4j/kernel/impl/storemigration/StoreUpgraderInterruptionTestIT.java
	community/kernel/src/test/java/org/neo4j/kernel/impl/storemigration/StoreUpgraderTestIT.java
added status endpoint to indicate ability to process transactions, additional to the existing master/ slave endpoints

(cherry picked from commit d3da2c164fd1c8d22e3a5d499c4775dad85bdb28)
Fixes problem with parser not being thread safe

(cherry picked from commit d3da2c164fd1c8d22e3a5d499c4775dad85bdb28)
Mark 'neo4j/1.9-maint' as merged into master
Ensure InputTokens in the AST do not affect equality

Also:
- Use Option[Identifer] to indicate named vs anonymous nodes / rels in AST
- Use boolean to indicate DISTINCT closing clauses
- Ensure stateless building of legacy Query
Add additional tests
Merge pull request #1835 from cleishm/ast

Ensure InputTokens in the AST do not affect equality
Merge branch 'neo4j/1.9-maint' into master
Response header buffer should also be 20k
Allowing for spaces and a typo

Allows spaces in directory structure, also fixes a quick typo regarding
the Installer bat file name.
TransactionalRequestDispatcher now catches runtime exceptions in order to close any open transactions (only manually tested)
RestfulGraphDatabase.set*Properties now gracefully handle constraint violations
Send raw JSON to server.

Parsing and re-serialising JSON doesn't work properly for some content,
specifically it doesn't work for passing single quoted strings that
lose their quotes when sent to the server.

Fixes #1777.
Moves monitoring to its own package and adds support for monitor tags

Monitoring was part of the o.n.k.impl.util package, now it is moved to o.n.k.monitoring
Monitors has support for tags added so finer grained control over listeners can be
 achieved
Monitors no longer accepts a logger as a constructor argument - that functionality
 can now be properly achieved by adding a Monitors.Monitor to the Monitors instance.
Packs logged string in one line for easy grepping in source
Exhaust iterators before finishing transaction.