add support for bitcoind-style script strings

The script string format I had designed earlier was supposed to be very
straightforwardly isomorphic to the byte representation and more human readable
than the bitcoind format. However, in order to be able to run bitcoind's tests
on the script interpreter, as well as to be able to read and write script
strings in a manner compatible with bitcoind, it was valuable to add support
for bitcoind's format.

I've also added relevant json test data from bitcoind:

script_invalid.json
script_valid.json
tx_invalid.json
tx_valid.json

...these will be used when I finish writing tests for the interpreter.

I also updated the opcodes to the latest from bitcoind.

I also want to note that test coverage has decreased into the 80%s due to the
fact that I added the script interpreter without writing all the tests for it:

=============================== Coverage summary ===============================
Statements   : 82.76% ( 2569/3104 )
Branches     : 65.93% ( 896/1359 )
Functions    : 96.98% ( 353/364 )
Lines        : 83.27% ( 2568/3084 )
================================================================================

...this will be fixed when the tests for the script interpreter are finished.
test vectors -> vectors

Of course they are test vectors, since they are in the tests.
substr compatible between toString/toBitcoindString
fix issues with bitcoind script strings

Although it will not always be the case that a bitcoind string will be output as the same string, it certainly should be the case that if you output a string, then input it again, then output it again, the two outputs should be equal. I added tests that check for this, as well as fix various issues along the way:

* Support .fromString(undefined)
* Support writeBN for writing a big number in the minimal way, e.g. using OP_1
 instead of pushing a separate 1 data.
* Support writing 0 sized buffers