make chain selection typed and more explicit in naming and logging (#4345)

* minor: assure conditions match

This simplifies visual integrity checks that an overseer is connected
when it has to be.

* fix: avoid printing a misleading log in case of the disabled disputes feature

* chore: comments

* add expressive types for the selection algorithm
25 jobs for master in 45 minutes and 29 seconds (queued for 8 seconds)
Name Stage Failure
failed
check-dependent-cumulus Build
    ... which satisfies dependency `derive_more = "=0.99.16"` of package `cumulus-client-network v0.1.0 (/builds/parity/polkadot/cumulus/client/network)`
... which satisfies path dependency `cumulus-client-network` of package `cumulus-client-collator v0.1.0 (/builds/parity/polkadot/cumulus/client/collator)`
... which satisfies path dependency `cumulus-client-collator` of package `cumulus-client-service v0.1.0 (/builds/parity/polkadot/cumulus/client/service)`
... which satisfies path dependency `cumulus-client-service` of package `cumulus-test-service v0.1.0 (/builds/parity/polkadot/cumulus/test/service)`
... which satisfies path dependency `cumulus-test-service` of package `cumulus-client-pov-recovery v0.1.0 (/builds/parity/polkadot/cumulus/client/pov-recovery)`

failed to select a version for `derive_more` which could resolve this conflict
Cleaning up file based variables
ERROR: Job failed: exit code 1