Encountering OP_VERIF and OP_VERNOTIF in execution is always an error.

I honestly thought we already handled this, but some tests dhill is
working on shows that we didn't.
Conditionals must not straddle two scripts.

Found by tests dhill is working on. We checked that ifs were closed at the end
of execution but not at script switching time, we now move this to just after
finishing a single script.
Disabled opcodes are `fail if pc passes' not fail if execute.

Detected by bitcoind negative tests.
Alt stack should be purged between scripts.

Found by bitcoind negative scripts.
PopInt now guarantees that number will be 32 bit.

So remove later checks that need this.
Make opcode.Exec run a bunch of unconditional checks

Add push length and number of operations to this to match bitcoind behaviour.
found that we differed here by their negative tests.
Always return reserved opcode for always-illegal ops.
Enforce a combined max stack depth of 1000 after every opcode.

This limit is for the sum of main and alt stacks. Found by bitcoind
negative tests.
Enforce max script length of 10000.

Detected by bitcoind negative script tests. Note that this length is only for
*executing* scripts, this is why it is in NewScript.
PushDataN with a 0 length is valid, we were too tight here.

Found by bitcoind positive tests. (but of course that is noncanonical
anyway, it should be OP_0 ;).
AddData([]byte{}) is valid and should push empty to the stack.

Doing so is perfectly idiomatic.  Fixes the last of the valid bitcoind
script tests. (by fixing the script parser :)
move data extraction fof OP_PUSHDATA into main function.

This allows us to centralise the error checking to simplify things a bit.