[FLINK-1323] Add an I/O writer implementation that uses callbacks on completed write requests

  - also refactors the I/O Manager Readers and Writers to interfaces
 -  allows for a very simple way of plugging in a synchronous version of the I/O manager (currently all I/O is asynchronous)
trivial: we can do `this.id = checkNotNull(channelID);` directly