Refine and test exchange model

**Description:** refine and test the exchange model up to the handshake part. Closer to a complete implementation but we should stop and merge at some point so stuff marked as TODO and MicroPaymentChannel stuff is out of scope.
**Testing:** tests pass!
**Coverage:** about 80% for the `impl` package.
**Reviewer:** @ximo
This is not actually the last one. This is the transaction that would be generated from the current micropayment channel state. If the channel did not transfer all the funds yet, this is the transaction for step _n_, excluding the deposits. If the channel completed the whole transaction, this is the exchange amount plus the deposits. 

Do you think we need a better name to reflect that?