Change how we apply blocks when we get them out of order.
requested to merge dont-treat-linking-unlinked-blocks-as-a-fork-switch into prevent-fork-switch-restoring-when-lib-is-on-new-fork
If we were to receive blocks in the wrong order (say, our head block is 1, and we get block 3 then block 2), block 3 will be saved in the fork_db's unlinkable blocks index. Then when we get block 2, we can apply both 2 then 3. Previously, we considered this a "fork switch", and used the fork switching code to apply these blocks. This did unnecessary work and generated misleading log messages stating that we're switching to a fork, when we just got blocks in the wrong order.