Introduce OngoingExchange

**Description:** Introduce OngoingExchange to solve the problem of our code knowing more than it should know before it happens. In upcoming PRs the information at Exchange will be reduced respect with OngoingExchange (that has the benefit of being created after the handshake).
**Testing:** tests pass.
**Coverage:** unchanged.
I would implement this through inheritance instead of composition because of 2 reasons:

1. An ongoing exchange is an exchange, which _sounds_ like inheritance
2. You are exposing every single public value in exchange in the ongoing exchange, which also sounds like inheritance.

I know that composition should be preferred over inheritance, but since what is going on in this class is already a poor man's inheritance, why not use the language supported mechanism?