Refine and test exchange model (Cont.)

### Description

**This is the continuation of PR #184. Some of that feedback has been addressed. Please continue commenting in this PR instead.**

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