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
I don't think so. That would be an unnecessary coupling of immutability and transaction processing. We might require to perform some operations on raw, mutable transactions, and `TransactionProcessor` is a good candidate to encapsulate that. Forcing `TransactionProcessor` to work only with `ImmutableTransaction` prevents that use case.