Add interfaces for transaction broadcast actor and bitcoin's peer actor

**Description** This PR adds two new "interfaces" (the definition of request and reply objects) for two actors:

1. The bitcoin **PeerActor**: the BlockchainActor works at the blockchain level (no surprise there), which means it doesn't have the notion of what peers we are connected to in the bitcoin network, and therefore it cannot broadcast transaction for inclusion in the next block. The PeerActor takes care of this, by managing the peer set we are connected to in the bitcoin network. Since the blockchain is directly influenced by the set of peers you have (a different set of peers might produce a different blockchain), this actor is also the way to obtain a BlockchainActor, which will have the blockchain generated by the specific set of peers that the PeerActor is handling.

2. The **ExchangeTransactionBroadcastActor** (formerly known as the _AbortActor_): this actor contains the necessary logic to broadcast the correct transaction after an exchange. This includes the logic to broadcast the successful transaction. It will use the PeerActor to perform the necessary broadcasts, and queries the MicropaymentChannelActor for the best (i.e. last signed) transaction to be broadcast.

This PR also fixes https://github.com/Coinffeine/coinffeine/issues/206.

**Testing** Tests pass
**Coverage**

- 97% exchange package
- 95% micropayment package
No, this is not an atomic memory cell, the purpose is different. Take a look at my comment below.