Refactor Transaction Proposals

- spawns TxProposal to a new class
- completely rewrite TxProposal and TxProposals tests to be really UNIT tests
- remove metadata from TxProposals. Remove PEER TRUST
- Adds multiple checks to received/read TxProposals:
  - must have a correct redeem script
  - signatures must be valid
  - metadata (signed and creator) is derived from the signature
  
Fixes https://github.com/bitpay/copay/issues/135 
Fixes https://github.com/bitpay/copay/issues/939

Addresses item 1 from (Known issues)[https://github.com/bitpay/copay/wiki/Copay-Known-issues#peer-trust]

A peer could have sent a 'rejectedBy' message, but if his signature is in scriptSig, the later fact will have preference
over the first one. scriptSig's contents is the authoritative entity regarding the transaction status.

This just a fact that can not be changed by Copay, e.g: In a 2-3 wallet a TXP could have 1 signature, and 2  rejections. Later, if the unspent outputs are still available, a peer could sign the TX and broadcast it.

The only workaround I thought about that is moving the funds to other address once a TX rejected, but the elegant way to do that is to send always 2, competing TX proposals at the sametime, and the peer reject the outgoing TXP by signing the TX sending the same inputs to an address in the same wallet. It is actually pretty cool :)  I will spawn a ticket for that, for later evaluation. (https://github.com/bitpay/copay/issues/1056)