Add EncodeBuffer/DecodeBuffer/BufferSink

EncodeBuffer is a buffer class to encode messages, and DecodeBuffer
is to decode messages. BufferSink is interface to define how to be
written to Transport.
Fix to use DecodeBuffer as ByteBuffer wrapper

Instead of using ByteBuffer directly on receiving data at Channel,
use DecodedBuffer wrapping the ByteBuffer in a load pipe line.
Add output type parameter to Stage etc.

Stage and its related classes has two type parameters: I and O.
The I is input message type, used in the argument of process(),
and the O is output message type, used in the argument of proceed().