Offer buffer-oriented API for I/O and replace custom Java NIO TCP/IP code with Netty 4 library

This PR includes an old PR (#511), which has not been merged and replaces the custom Java NIO TCP/IP code with the [Netty 4 library](http://netty.io/) on top of it. See #511 and #25 for some notes on the buffer-oriented API.

Netty replaces our custom NIO code, which was used to setup the TCP connections and queue network envelopes. The main Netty-related stuff is located in the `runtime.io.network.netty` package: `NettyConnectionManager` and `OutboundConnectionQueue` are the entry points for connection setup and envelope queueing. `OutboundEnvelopeEncoder` and `InboundEnvelopeDecoder` take care of serialization and deserialization. All main components have respective test cases. I also went over the buffer-orientation changes but did not add any further tests since the original PR yet.

I will now run the test job on a cluster and get back to confirm that this also fixes #652.