Script: use safer decodeInt

While bitcoind happily *encodes* integers into >4 bytes, it never *decodes*
anything that is >4 bytes. So script eval shouldn't have a function that does
that either.

The tests now also reflect these constraints.