[FLINK-971] Configure PooledByteBufAllocator in NettyConnectionManager

...instead of using the default allocator

Configuration:
- 0 heap arenas,
- n direct arenas (where n = num incoming + num outgoing network IO threads), and
- bufferSize << 1 bytes page size.

Additionally, `OutboundEnvelopeEncoder` directly implements `ChannelOutboundHandlerAdapter` instead of the
`MessageToByteEncoder<Envelope>` wrapper to have tighter control of memory allocations.