Extend pipelined peer to allow collecting pipelined results
Previously the recieve handler for a pipelined send could only perform effects but not return any result to the main flow of the peer. This makes it awkward to test since it requires effects, and there may also be protocols where it is convenient to take advantage of this.
It does make the types somewhat more complex however. The tests can become simpler.
This patch just updates the core infrastructure. The driver and the examples and tests have to be updated.