Removed the overhead of CandidateList
Include relationship types in plan description.
Unify Expand{ByName/ById} pipes

Instead of building different pipes for relationship types that are known
at planning time and the ones that are not, we now lazily initialize fetch
the relationship type ids, and only ask to traverse by the types that
actually exist at the point in time when the query executes.
Store migrator sets base tx checksum if migrating empty store

since there's this convention that txId=BASE_TX_ID has checksum
BASE_TX_CHECKSUM. This logic exists in some places and StoreMigrator
now follows that convention as well to avoid checksum mismatches.
Merge pull request #3677 from tinwelint/2.2-base-tx-checksum-empty-migration

Store migrator sets base tx checksum if migrating empty store
import is a keyword...
Merge pull request #3670 from systay/candidatelist-removal

Removed the overhead of CandidateList
Introduce an exhaustive planner

Still work in progress - not used by default yet.
Merge pull request #3673 from pontusmelke/2.2-improved-plan-description

Improved plan description
Mentions need for explicit neo4j-io test-jar depepdency
Removed test
Produce fewer exceptions

This fixes two hot exception producers that popped up during performance testing.
This might slightly improve performance, but there's another benefit in that it removes two very noisy spots from the code, so we can get more interesting signal about rarer exceptions.

The CollectUserAgentFilter is only a problem during performance testing, where the load generators don't provide a User-Agent header.
Probably not an issue in production.

The ResultIterator was implemented in a way that required non-local control flow through lambdas.
This is implemented in Scala with trace-less exceptions.
Changing the logic around to no longer do an early return removes the need for this control-flow-by-exception.