[Google search results](https://www.google.com/search?q=of+the+last+100+blocks+have+unexpected+version) suggest that our users are more confused than helped by the `<n> of the last 100 blocks
have unexpected version` warning we're printing.

As developers we know the unfortunate reason behind this warning and how "unexpected" should be interpreted in this context, and thus why it is safe to disregard this warning. However, I don't think it reasonable to expect our users to know the historical context here.

In order to not desensitize our users to potentially critical "real" warnings, would it make sense to move this message to the `-debug=validation` log category?
{
    const MapCheckpoints& checkpoints = data.mapCheckpoints;
    for (const MapCheckpoints::value_type& i : reverse_iterate(checkpoints))
    {
        const uint256& hash = i.second;
        CBlockIndex* pindex = LookupBlockIndex(hash);
        if (pindex) {
            return pindex;
        }
    }
    return nullptr;
}
/** Context-dependent validity checks.
 *  By "context", we mean only the previous block headers, but not the UTXO
 *  set; UTXO-related validity checks are done in ConnectBlock().
 *  NOTE: This function is not currently invoked by ConnectBlock(), so we
 *  should consider upgrade issues if we change which consensus rules are
 *  enforced in this function (eg by adding a new consensus rule). See comment
 *  in ConnectBlock().
 *  Note that -reindex-chainstate skips the validation that happens here!
 */
static bool ContextualCheckBlockHeader(const CBlockHeader& block, BlockValidationState& state, const CChainParams& params, const CBlockIndex* pindexPrev, int64_t nAdjustedTime) EXCLUSIVE_LOCKS_REQUIRED(cs_main)