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
After some attempts to get such a validation, I realized that's a nonsense. 

In BitcoinJ, `Transaction` objects are bounded to the blockchain via some of its members as its `ConfidenceType`. In `ImmutableTransaction`, the serialization mechanism removes any trace of confidence type information, so any check on that is fruitless. 

My suggestion is to drop away any confidence check from the `DefaultHandshake` class. We should perform checks on the transaction properties that are part of the transaction itself, and not from the context it was retrieved (blockchain). Thus, I'll remove any confidence type check in that class. 

Agree?