[1.9] Fix backup service incorrectly initializing new log with -1 as previous txId.

The backup service receives a transaction (the last one) and should initialize
the log header with its txId minus one.
Fix failure of backing up store upgraded from old backup.

Trying to get more than one transaction during backup from
an upgraded store might fail since they might contain only
a single transaction in its backed up log. This is the case
for 1.9 stores currently.

The commit basically reverts this mismatch and only tries to
backup a single transaction. A more robust and flexible solution
could look at the logs and backup a reasonable amount of them
if available, which might be good for debugability.
More refactoring to make it easier to do dependency injection
Cache values on reads

- refactor ConcurrentTrackerState to have an internal map rather than extends a ConcurrentHashMap
Flush the schema state and replan when counts have changed a lot
Open up a class for testing
Merge pull request #3207 from systay/candidate-list

[2.2] More refactoring to make it easier to do dependency injection
Merge pull request #3208 from davidegrohmann/2.2-counts-store

[2.2] Flush the plan cache when counts have changed a lot
Merge pull request #3205 from martinfurmanski/fix-failure-of-backing-up-store-upgraded-from-old-backup

[2.2] Fix failure of backing up store upgraded from old backup.
Merge pull request #3206 from martinfurmanski/1.9-backup-incorrect-log-header-previous-txid

[1.9] Fix backup service incorrectly initializing new log with -1 txId.
Merge remote-tracking branch 'upstream/1.9-maint' into 2.0-maint

Conflicts:
	enterprise/backup/src/main/java/org/neo4j/backup/BackupService.java
Make PageCacheMonitor test less flaky

The new possibility for blocking page faults and direct transfer of new pages,
make it possible for more evictions to happen. These tests were written when
this wasn't the case, so they didn't take this into account. This has been
fixed.
Merge pull request #3211 from davidegrohmann/merge-1.9-into-2.0

Merge 1.9 into 2.0
Merge remote-tracking branch 'upstream/2.0-maint' into 2.1-maint

Conflicts:
	enterprise/backup/src/main/java/org/neo4j/backup/LogicalLogSeeder.java
	enterprise/backup/src/test/java/org/neo4j/backup/BackupServiceIT.java
Improve selectivity calculations.

With this change we no longer discard label predicates after using them.
Threads in executors used by Netty made daemon
Optional visualization diagnostics in a transparent footer.

Simple textual statistics update once per second while any
visualization is running.
Enable display of diagnostics through
:config showVizDiagnostics: true
Merge pull request #3213 from pontusmelke/improve-selectivity-calculations

[2.2] Improve selectivity calculations.
Merge pull request #3214 from davidegrohmann/merge-2.0-into-2.1

Merge 2.0 into 2.1
Merge pull request #3193 from lutovich/2.2-cleanup-netty-executors

[2.2] Threads in executors used by Netty made daemon