Need to fix some misconception in ForkedChain
- [x] No more cursordesc, cursorheads, pivotarc, arc. Just heads and branches like what the community call them.
- [x] updateFinalized happen before updateBase.
- [x] updateFinalized will responsible for pruning branches that is no longer can reach finalizedHead.
- [ ] updateBase will move base forward up to allowed distance, or to the nearest junction of a fork.
- [x] ~Replay to target block using a list built during traverse backward from target block to a known block.~ #2950

see also:
https://github.com/status-im/nimbus-eth2/blob/412ea71115ce6dded2841f18320c91feb86bf372/beacon_chain/consensus_object_pools/blockchain_dag.nim#L1963