The code assumed that the number of `Local` and number of locals is the
same thing. In reality though it is not. `Local` actually represents a
group of locals with the same type. The group can declare more than one
variable and the number of them is returned by `Local::count`.
In this PR we acknowledge this fact. Along the way we add a checked
arithmetic for locals_count and max_stack_height summation.
Right now if there is a diff between the actual and expected results,
the expected file will be overwritten. This may be annoying. To make it
controlled we introduce BLESS option.
This means that the expected files won't be regenerated unless this
environment variable is set.
Therefore to regenerate the tests use:
BLESS=1 cargo test
* No need for mem::replace when doing a simple assignment
* Allow specifying the module of the imported 'gas' function
This allows users to place the imported function inside a custom
module instead of the generic 'env' module.