Joining cluster member uses atomic broadcast after voting
Fix race in IndexLookupTest with getting the test index online
Reduces unnecessarily thrown exceptions

- when initially loading nodes and relationships, i.e. mostly checking
  that such exists. Previously went through a path throwing
  InvalidRecordException. Now uses method returning null or record.
- when visiting node degrees for state before commit, as part of
  committing nodes. Previously went through path throwing
  EntityNotFoundException. Now uses method returning boolean.
Ignores transactions w/o commit entry when migrating logs
Enables execution of IT tests in community/neo4j component

and fixed outdated tests:
- Some tests hadn't kept up with a change in exampledb.zip
- Test that exposed issue where database files were changed while
  migrating
Only deduplicate properties if there were any duplicated key tokens
Temporarily disable tests while fixing underlying problem
Merge pull request #3554 from tinwelint/2.2-migration-logs-ignore-nocommit

Enables execution of IT tests in community/neo4j component
Merge pull request #3563 from tinwelint/2.2-less-thrown-exceptions

Reduces unnecessarily thrown exceptions
Revert "Lock-free loading of relationships"

This reverts commit 7bb2861dee3d0018a4e75c84841c8b71f818d6b9.
Merge pull request #3561 from chrisvest/2.2-fix-indexlookuptest-flakiness

Fix race in IndexLookupTest with getting the test index online
Merge pull request #3555 from lutovich/2.2-rare-cluster-join-issue

Rare cluster join issue
Cope better when asking import-tool to import empty files

* ImportTool now no longer prints a big stack trace (by default) when asked to import empty files.
* Add a new --stacktrace command line option that can enable printing of stack
  traces for those who want to debug things.
* The Thread created by the ThreadReadaheadReadable has been made daemon so it
  no longer prevents a shut down of the importer process.
* Panics in the import pipeline now preserve exception messages when wrapping
  causes.
Merge pull request #3567 from chrisvest/2.2-import-empty-files

Cope better when asking import-tool to import empty files
Refactor TxState to separate read/write ops

By separating the read operations of the transaction state and the write
operations of the transaction state into separate interfaces we can
allow for API clients that only need to be able to read the state.

By ensuring that there is no overlap between the methods used for
reading and the methods used for writing (including in the internal
implementation - don’t use reader methods to access state for writing)
we can ensure that reading state never initialises lazy data structures.

When reading never initialises state we can allow reader methods to
return read-only objects when there is no state present, allowing us to
concentrate null checks to only a few places, and make the code that
reads the state simpler by having fewer special cases to deal with.
Include transaction state in counts