Add ScriptInterpreter for script evaluation

This PR adds the ScriptInterpreter class, which allows to execute bitcoin Scripts.
It adds tests using data from bitcoind, to be sure it's working correctly.

Big thanks to @ryanxcharles, many parts of this code were ported from his version at https://github.com/ryanxcharles/fullnode
It looks like `checkArgument` has these arguments: `(condition, argumentName, message)`, not sure if passing an error here works correctly.