Merge pull request #163 from sortega/fees

Move exchange amounts calculation logic to ExchangeAmountsCalculator
Add support for bitcoin fees on FeeCalculator
Add fees support on multisig deposit creation
Create deposits with fees during handshake
Introduce fees on micropayment channels
Move deposits amounts logic to Exchange.Amounts
Check output amount of seller deposit
Use Amounts.bitcoinRequired for consistency with fiat stuff
Merge pull request #165 from gotoalberto/task/176

Introduce Bitcoin fees on exchange
Introduce `NodeId` and `BrokerId`

This commit introduces a new sealed trait `NodeId` used to identify nodes in
the Coinffeine network. It has two implementations: our old-friend `PeerId` and
a new one, `BrokerId`, used to identify univoquely the broker.

All the code has been refactored to use `NodeId` where the ID of any node is
expected instead of just the ID of a regular peer.
Replace `SubscribeToBroker` with `Subscribe.fromBroker`
Remove dead code
Replace `ForwardMessageToBroker` with regular forwards and `BrokerId`
Merge pull request #166 from apoloval/task/TheWonderBrokerId

Change the way the messages are sent/received to/from broker
Add some improvements to `GatewayProbe`

* Add the ability to expect unsubscriptions from actors
* Add a flag argument to `relayMessage()` that indicates whether it must check
existing subscriptions.
Add a utility actor `MessageForwarder`

This actor can be use to forward a message to the Coinffeine network and
expect a response from the receiver.
Move initialization of `MessageForwarder` to its constructor

`MessageForwarder` instances are designed to forward a single message in all
its lifecycle. That means they could be simplified by moving its initialization
from the `Forward` message receival to its constructor. That's what this commit
does.

After this change, the `changeSubscriptions` flag of `relayMessage()` in
`GatewayProbe` are no longer necessary and removed.
Fix `MessageForwarder` termination

Removing unnecessary actions and make simply `context.stop(self)`.
Add convenience members to `MessageForwarder` companion

* A function `cancel()` that cancels a message forwarder.
* A `Factory` class that receives a reference to a message gateway and an
actor context and is able to create `MessageForwarder` instances just providing
the message, the destination and the confirmation.
Introduce ChaosMessageGateway component

This component can be used to simulate unreliable network conditions in
which a proportion of the messages are lost.