fix: revert known_bytecode.take() to .clone() — preserves inspector semantics
take() would set known_bytecode to None before storing CallInputs in the
frame, causing inspectors to see None in call_end instead of the original
bytecode. Since Bytecode is Arc-based, clone is just a refcount bump.
Amp-Thread-ID: https://ampcode.com/threads/T-019c4d64-1616-748b-a177-d78be0d80a86
Co-authored-by: Amp <amp@ampcode.com>
feat(revme): validate block gas used in blockchain tests
Add cumulative gas tracking per block and validate against the expected
gas_used from block headers. Uses EIP-7778 logic for Amsterdam+ where
block gas excludes refunds (spent vs floor_gas), falling back to the
standard used() calculation for earlier specs.