* Refactored Signer interface to use TxSigComponent and UTXOSpendingInfo
Fixed all the broken things
Replaced TxSigComponent with unsigned Transaction in Signer interface to remove illegal states
* Added p2sh throw case in Signer
* Created P2WSHSigner and removed P2WSHWitnessSPKV0 case from P2PK and P2PKH signers
* Moved P2WSH MultiSig from MultiSigSigner to P2WSHSigner
* Cleaned up P2WSH case of BitcoinTxBuilder.signAndAddInput to exclusively use P2WSHSigner
* Replaced Option[(TxSigComponent, ScriptPubKey)] with an ADT
* Added signing with overrides to super Signer class to simplify delegation code
* Added Scaladocs for OverridesForNestedSigning ADT
* Made naming better for OverridesForNestedSigning ADT and added scaladocs
* Update script_tests.json, fix bugs that were unveiled with that update. Specifically around handling negative zero in Script, and cleanstack behavior for segwit scripts. We were not checking for equality at the byte level for negative zero. With cleanstack, we were failing the script, but not failing with the correct error. If you look at interpreter.cpp in bitcoin core, cleanstack check is done before checking if the stacktop is true or false
* Address code review
* Make ChainApi to scan the block filters in order to find matches
* performance improvements, unit test
* some parallelization
* addressed comments
* parallelism level
* fix parallelism computation
* Scala 2.11 compatibility
* increased test coverage
* cleanup
* more checks and cleanup
* change ChainApi.getMatchingBlocks signature
* some more changes
* Tightened up types, only allowing ExecutionInProgressScriptPrograms to be executed in Script OPs and having output type that cannot be PreExecutionScriptProgram
* Fixed all tests!
* Replaced all calls to loop and loopOrComplete with a single one at the bottom to retain the tailrec property
* Added a couple docs
* Removed all IntelliJ warnings and did some very minor and contained cleanup
* Refactored ScriptInterpreter.run into nicer pieces
* Replaced all calls to isInstanceOf with matches
* Use the fact that network headers specify the number of bytes in the payload rather than just parsing from bytes.size, this should allow us to be more precise when parsing NetworkPayloads rather than _hoping_ that bytes.size does not land on pseudo-valid NetworkPayload. This hopefully resolves#782
* Add safety check around HeadersMessage.toString()
* Add invariant to NetworkMessage saying payloadSize in header must be the actual payload size
* Add a log at INFO level to indicate we are making progress while syncing
* Adjust sync log message to INFO in p2p code
* Fix off by one error
* Run scalafmt