This commit honors the compiler version requirement listed in the solc
modes of the metadata file. If this version requirement is provided then
it overrides what was passed in the CLI. Otherwise, the CLI version will
be used.
* Re-order the input file.
This commit reorders the input file such that we have a definitions
section and an implementations section and such that the the order of
the items in both sections is the same.
* Implement a reverse polish calculator for calldata arithmetic
* Add a barebones common crate
* Refactor some code into the common crate
* Add a `ResolverApi` interface.
This commit adds a `ResolverApi` trait to the `format` crate that can be
implemented by any type that can act as a resolver. A resolver is able
to provide information on the chain state. This chain state could be
fresh or it could be cached (which is something that we will do in a
future PR).
This cleans up our crate graph so that `format` is not depending on the
node interactions crate for the `EthereumNode` trait.
* Cleanup the blocking executor