* feat(eth): optimize ReceiverMessages parseAndVerifyVM
* test(eth): update test setups to use wormholeReceiver
* chore(eth): remove console logging
* feat(eth): optimize & revert return type for parseAndVerifyVM
* fix(eth): add index boundary checks
* perf(eth): optimize verifySignature by passing in primitives instead of structs
* test(eth): add wormhole tests related to guardian set validity
* test(eth): add more parseAndVerify failure test cases
* test(eth): add more failure tests for parseAndVerify
* test(eth): add empty forge test, refactor/deduplicate
* feat(ethereum): charge update fee per numUpdates for accumulator updates
* refactor(ethereum): refactor, add benchmarks for getUpdateFee
* refactor(ethereum): add back parseWormholeMerkleHeaderNumUpdates
* refactor: increment totalNumUdpates by 1 for batch prices
* test(ethereum): add test for checking getUpdateFee for accumulator, clean up unused code
This PR adds the support WormholeMerkle accumulator message to the ethereum contract while still supporting the old message format. The code is not optimized yet and with more optimizations we can achieve a better gas usage. Currently based on the gas benchmark below it has a 18% improvement with a single price feed. Although the cost of updating 5 feeds in the same batch is higher than the current approach but in reality the chances that all 5 feeds be in the same batch is very low.