Light forward sync mechanism (#6515)
* Initial commit.
* Add hybrid syncing.
* Compilation fixes.
* Cast custom event for our purposes.
* Instantiate AsyncEventQueue properly.
* Fix mistype.
* Further research on optimistic updates.
* Fixing circular deps.
* Add backfilling.
* Add block download feature.
* Add block store.
* Update backfill information before storing block.
* Use custom block verifier for backfilling sync.
* Skip signature verification in backfilling.
* Add one more generic reload to storeBackfillBlock().
* Add block verification debugging statements.
* Add more debugging
* Do not use database for backfilling, part 1.
* Fix for stash.
* Stash fixes part 2.
* Prepare for testing.
* Fix assertion.
* Fix post-restart syncing process.
* Update backfill loading log statement.
Use proper backfill slot callback for sync manager.
* Add handling of Duplicates.
* Fix store duration and block backfilled log statements.
* Add proper syncing state log statement.
* Add snappy compression to beaconchain_file.
Format syncing speed properly.
* Add blobs verification.
* Add `slot` number to file structure for easy navigation over stream of compressed objects.
* Change database filename.
* Fix structure size.
* Add more consistency properties.
* Fix checkRepair() issues.
* Preparation to state rebuild process.
* Add plain & compressed size.
* Debugging snappy encode process.
* Add one more debugging line.
* Dump blocks.
* One more filedump.
* Fix chunk corruption code.
* Fix detection issue.
* Some fixes in state rebuilding process.
* Add more clearance steps.
* Move updateHead() back to block_processor.
* Fix compilation issues.
* Make code more async friendly.
* Fix async issues.
Add more information when proposer verification failed.
* Fix 8192 slots issue.
* Fix Future double completion issue.
* Pass updateFlags to some of the core procedures.
* Fix tests.
* Improve initial sync handling mechanism.
* Fix checkStateTransition() performance improvements.
* Add some performance tuning and meters.
* Light client performance tuning.
* Remove debugging statement.
* Use single file descriptor for blockchain file.
* Attempt to fix LC.
* Fix timeleft calculation when untrusted sync backfilling started right after LC block received.
* Workaround for `chronicles` + `results` `error` issue.
Remove some compilation warnings.
Fix `CatchableError` leaks on Windows.
* Address review comments.
* Address review comments part 2.
* Address review comments part 1.
* Rebase and fix the issues.
* Address review comments part 3.
* Add tests and fix some issues in auto-repair mechanism.
* Add tests to all_tests.
* Rename binary test file to pass restrictions.
* Add `bin` extension to excluded list.
Recover binary test data.
* Rename fixture file to .bin again.
* Update AllTests.
* Address review comments part 4.
* Address review comments part 5 and fix tests.
* Address review comments part 6.
* Eliminate foldl and combine from blobs processing.
Add some tests to ensure that checkResponse() also checks for correct order.
* Fix forgotten place.
* Post rebase fixes.
* Add unique slots tests.
* Optimize updateHead() code.
* Add forgotten changes.
* Address review comments on state as argument.