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
To the first coment: I am using `!` because I do not need to specify the sender, whereas `tell` makes you specify it.

To the second comment: the whole point of the actor is that it replies to any (non-control) message with a constant value. If I change it to a specific message then it will break its purpose (and the `ExchangeTransactionBroadcastActor` too, since it sends a `GetLastOffer` message to this actor).