Snapshot/Restore: keep the last legacy checksums file at the end of restore

 This commit fixes the issue caused by restore process deleting all legacy checksum files at the end of restore process. Instead it keeps the latest version of the checksum intact. The issue manifests itself in losing checksum for all legacy files restored into post 1.3.0 cluster, which in turn causes unnecessary snapshotting of files that didn't change.

Fixes #8119
Test: force merge index in the end of IndexStatsTests.throttleStats

This works around slow IO (fsync) causing the test-framework cleanup
to timeout at 30 seconds when trying to delete the index.

Closes #8528
[TEST] Register data.path for all nodes on close in InternalTestCluster

We need to register those data paths otherwise we might miss path that
need to get cleaned when using local gatway etc. which can otherwise
cause imports of dangeling indices.
[STORE] Use DistributorDirectory only if there are more than one data direcotry

We don't need the overhead of DistributorDirectory if there is only a single directory
in the distributor.
[CORE] Ban all useage of Future#cancel(true)

Interrupting a thread while blocking on an NIO Read / Write Operation
can cause a file to be closed due to the interrupts. This can have unpredictable
effects when files are open by index readers etc. we should prevent interruptions
across the board if possible.

Closes #8494
[TEST] distributor direcotory is only used if multiple datapath are configured
[TEST] Give tests for ctx._ttl more leeway

Fixes #8500
[TEST] add more debug output when engine / store are closed
[TEST] Revert accidential massive iterations
Docs: Update execution hint docs for Significant terms agg

copied over the relevant pieces from the terms agg

Closes #8532
Test: don't enable unnecessary http transport in restoreIndexWithShardsMissingInLocalGateway test