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
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.
Moved API level usage of internal class GraphDatabaseAPI into internals.

(cherry picked from commit 564e177a3935632b28a819e1b9686bee92c7fe6a)
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.
Use try-with-resources.
Better logging around elections

logs full vote list, filtered votes and biased instances for
promotion/demotion.
Added Leo Quote
Avoid deprecated API in docs. Make server plugin examples work.
Merge pull request #1845 from nawroth/avoid-deprecated

Avoid deprecated API in docs. Make server plugin examples work with 2.0.
Remove unnecessary test garbage files
Less garbage
Remove unnecessary test garbage files

Conflicts:
	community/kernel/src/test/java/org/neo4j/kernel/impl/core/TestRelationshipConcurrentDeleteAndLoadCachePoisoning.java
	community/server/src/main/java/org/neo4j/server/rrd/RrdFactory.java
	community/server/src/test/java/org/neo4j/server/ServerTestUtils.java
Remove unnecessary test garbage files

Conflicts:
	community/kernel/src/test/java/org/neo4j/kernel/impl/core/TestRelationshipConcurrentDeleteAndLoadCachePoisoning.java
	community/server/src/main/java/org/neo4j/server/rrd/RrdFactory.java
	community/server/src/test/java/org/neo4j/server/ServerTestUtils.java
Better wait condition -> no test hangs