B: Add the "eof" control message and change "close"

The new "eof" control message indicates the end of data in a channel
in a particular direction. It is relevant together with specific
payloads and affects their behavior. It may only be sent once per
direction, and after that point no more messages may be sent in
that direction.
    
The "eof" provides handshake interlocking for the success case for
payloads where this is necessary.
    
There is also no longer a "close" handshake. Either end can "close"
a channel, and the channel is considered closed immediately. In the
case of races, further messages are ignored.