In order to get a nice transaction debugger that allows users to step through individual opcodes, we need to split out the script execution code into a `RunNextOp` function, which then allows users to inspect the stack.
For that, introduce `ScriptInterpreter`, which simply contains all the state that would normally be in `EvalScript`, and add a few functions to interact with it, most importantly `RunNextOp`, which now contains one single execution of the next opcode.
`EvalScript` is then refactored to use `ScriptInterpreter` and calls `RunNextOp` in a loop.
There's no change in behavior.
NB: Curiously, removing two indents has the nice side effect that we also remove around 25 newlines when reformatting the interpreter code.