Upon parsing an invalid OP_PUSHDATA, append the invalid opcode to already parsed valid opcodes

On invalid OP_PUSHDATA, clear the added chunks.

test case for above changes
clean up address and script types

this makes for consistent naming of the address/script types everywhere,
gives us some more flexibility to introduce new types,
makes #encode/decode_address more generic and
highlights the importance of carrying the address type along the hash160,
while still preserving the old APIs for compatibility
clean up network descriptions
fix block builder target comparison
fix regtest proof_of_work_limit
tx builder: option to add extra fee on top of the calculated minimum fee
key regenerates pubkey after setting privkey
minor fix in CommandClient
Script #get_keys_provided for multisig scripts
script: leave nil object when address cannot be decoded from pubkey
Remove 'rescue Exception'
better syncing/getblocks behaviour
port BloomFilter from python-bitcoinlib
implement SPV storage backend and network logic

The backend is based on LevelDB, and stores only block headers and transactions it has been
told to watch for. If it is used, the node will set a bloom filter on all connections,
and receive filtered MerkleBlock's, stripped of most transactions we don't need.
Can sync the chain from network or import from local data files, and notify listening
clients about received transaction outputs.
cleanup handling of different modes in node/storage
end-to-end integration tests for spv mode (WIP)
update gui to adjust for changes in the bitcoin-ruby codebase
update gui to recent gir_ffi-gtk; fixes issue with connecting Gtk::Builder signals