signed int -> uint64_t is a bit of a weird implicit cast, given that
scripts can provide negative numbers, and .getint() uses clipping that
depends on platform's int size.
This Diff gives a more informative error message when sizes are negative,
instead of complaining about too large pushes. The negative number error
code will be used for multisig schnorr too.
Depends on D3266