Introduce cache.memory_ratio configuration for HPCache

New set-and-forget configuration that specifies cache size as a ratio of the
old generation max size. Memory division across internal components of the cache
is handled by fixed ratios.

If any of the old config (now referred to as "advanced config") is set, it will
override the memory_ratio configuration.
Everything not starting with 'cmdchar' is cypher.

* Also remove old debug message
Improvements to the application pause monitor.

- Use System.nanoTime() to remove false-positive from network time adjustments
  and other external factors.
- Don't track total block time, It isn't a useful metric and it was confusing.
- Have the "trigger" level be the max block time that's acceptable, rather than
  the max block time plus the monitor pause interval.
- Bump the default block time trigger level to 200ms
- Introduce a manual mechanism to verify that the monitor works.
Revert of "Remove non-versioned elections (2602)" pull request
Counts command now always writes the command type header

and will not even exist as a command in the transaction if the delta was
0. This fixes a problem where the reader, always expecting a command type
after a command log entry header to be there, failing to read that
command.
Jakub added fix for bug on card-459
Fix test DatabaseRegistryTest#shouldAwaitRunningQueriesBeforeDropping

Rationale:
It may happen that the threads in the test are not properly synchronized and
the one shutting down the db is faster than the first one to grap a reference to it.
Hence it might happen that the test fails.

Details:
- A new latch has been introduced to make sure that the thread are properly sunchronized.
- Test class has been cleaned up by introducing a @Before method.
- Fixed 2 deprecation warnings.
Merge pull request #3042 from oskarhane/send_all_but_commands_to_server

[2.0] Browser: Everything not starting with 'cmdchar' is cypher.
Do id freeing on rollback
Makes clear three transactions application modes

Internal, external and recovery. This means that we no longer "piggy back"
on recovery mode for external transactions being applied in HA.

This distinction exposed a problem where we evicted nodes unnecessarily
when deleting relationships, even in internal application mode. Another
problem with patching relationship chain caches was exposed and fixed.

This commit also removes the global "recovered status" from stores since
that is no longer applicable to 2.2 where many transactions can apply
commits at the same time. This state has now moved to each transaction
instead.
Merge pull request #3119 from tinwelint/2.2-fix-count-cmd-header

[2.2] Counts command now always writes the command type header
Merge pull request #2849 from jakewins/2.1-cache-config

[2.1] Introduce cache.memory_ratio configuration for HPCache
Merge pull request #3020 from rickardoberg/rollbackhandling

[master] Do id freeing on rollback
Merge pull request #3076 from jakewins/2.0-gc-logging

Improvements to the application pause monitor.
Merge pull request #3122 from craigtaverner/card-459

[2.2] Intermix optional match and cartesian product steps
Merge pull request #3108 from davidegrohmann/2.2-fix-flaky-test

[2.2] Fix test DatabaseRegistryTest#shouldAwaitRunningQueriesBeforeDropping
Merge branch '2.0-maint' into 2.1-maint

Conflicts:
	community/browser/app/scripts/init/commandInterpreters.coffee
Merge branch '2.1-maint'

Conflicts:
	community/kernel/src/test/java/org/neo4j/helpers/SettingsTest.java
Merge pull request #3114 from lutovich/2.1-rolling-upgrade-from-2.0

[2.1] Revert of "Remove non-versioned elections (2602)" pull request
Expected exception for a bad setting value changed from 2.1