Fix flaky tests by adding a custom matcher

- when checking maps of Cardinalities we need to make sure we have a
  internally a tolerance when comparing doubles
Muted broadcast failure msg when there are not enough instances in the cluster to constitute a quorum.
Reduce the probability of false dead-locks on index entries

Our locking API works on tuples of a ResourceType and an opaque resource id, represented as a 64 bit long.
This works great for node and relationships, as the resource id is just the record id.
Schema index entries, however, are actually tuples of label, property key and the indexed value.
Therefore, when we take a lock on an index entry, we produce a hash of the index entry tuple and take a lock on the hashed value.
It turns out that the hash function we previously used for these index entries, was quite prone to producing collisions.
Especially amongst values that are close to each other in an ordered sequence.
In the test I've added here, I saw a collision ratio of about 10%.
The new hash function is much more robust, and shows a 0% collision ratio, which only makes sense since we're dealing with a mere 25 million entries.
A sample set size that is practically microscopic compared to the space that is available to us in 64 bits.
If the 64 bit state space was all the sand in Sahara, our test would have looked at 2.5 million tons of sand (not as informative as I would have liked, but I had fun calculating it).
Fix Javadoc links in GraphDatabaseService.
Move naming of pattern elements in pattern relationships to Planning

This commit achieves the following invariants:

o In Planner, every identifier is covered by semantic table.
o All pattern elements are named in Planner, except if inside a PatternExpression
Merge pull request #3648 from jotomo/javadoc-links

Fix Javadoc links in GraphDatabaseService.
Merge pull request #3637 from chrisvest/2.2-index-hashing

Reduce the probability of false dead-locks on index entries
Merge pull request #3640 from davidegrohmann/2.2-fix-flaky-test

Fix flaky tests by adding a custom matcher
Refactor NeoStoreDataSource into modules, with clear dependencies (external and internal), and introduce Recovery,LogRotation, and LogPruning as separate processes.

The recovery process now works on its own channel to the underlying logs, so there is no longer any assumption that after recovery PhysicalLogicalLog can continue with the same channel. Instead it opens its own channel and moves to the end.
At the end of recovery, the log is truncated at the last properly read transaction, to cut off any scrambled transactions due to killed processes.

UpdateableSchemaState and its implementation didn't have anything to do with IAGD, so it was moved into NSDS.

Log pruning is now a separate process, that uses monitor callbacks to trigger when to run.
Log rotation extracted into its own process.
Merge pull request #3548 from rickardoberg/nsdsrefactoring

Refactor NeoStoreDataSource
Javadoc added
Merge pull request #3627 from S124568/2.2-mute-broadcast-when-no-quorum

Muted broadcast instance failure msg when no enough instances in the cluster to constitute a quorum
Assigned more time for a slave to become available for pulling updates

Fixed a error where update puller pulls update when a slave is not available by making it wait for a while for the slave to become available.
Fixed test compilation errors and some imports
Merge pull request #3624 from boggle/pattern-expr-naming

Move naming of pattern elements in pattern relationships to Planning
Merge pull request #3651 from S124568/2.2-fix-slave-syc-failure

Assigns more time for a slave to become available for pulling updates
Adding a new Cypher introduction.