init: abort loading of blockindex in case of missing height.
Summary:
If a height is missing we are facing a non-contiguous block index db, and could previously
hit an assert in GetAncestor() called from BuildSkip() instead of returning an error.
And perturb file in the functional test to ensure failure instead of only deleting them
This is a backport of core#26653, core#27823, core#28612 and core#28831
Test Plan: ninja all check-all
Reviewers: #bitcoin_abc, Fabien
Reviewed By: #bitcoin_abc, Fabien
Differential Revision: https://reviews.bitcoinabc.org/D18622