Fix several issues in the legacy structLog JSON format produced by the
struct logger tracer:
- Error field: change from string to *string so that error is truly
omitted (rather than serialised as "") when there is no error.
- Memory words: zero-pad each 32-byte chunk before hex-encoding so the
output always matches the expected 64-character format instead of
emitting a truncated hex string for partial words.
- Storage/ReturnData: use hexutil.Encode / common.Hash.Hex() to produce
consistent 0x-prefixed output rather than bare %x formatting.
Add tests that cover the legacy JSON shape directly (TestStructLogLegacyJSONSpecFormatting),
and two integration-level tracer tests verifying that refund counters and
storage snapshots are captured correctly and that hard-failure vs revert
return values are handled as specified.