!act #3581 Add Tcp.CompoundWrite, some cleanup

Even though most of this patch changes stuff "under the hood" there is one breaking change:

The `def ack: Event` and `def wantsAck: Boolean` methods from the `Tcp.WriteCommand` type are moved down to the newly introduced `Tcp.CompactWriteCommand`, which can break existing code.

However, since this is an important feature for spray it'd be great if there was a way to bring `Tcp.CompoundWrite` support back to Akka 2.2. Either we accept the breaking change in the next minor update to Akka 2.2.2 (and point to  the "experimental" state of akka-io) or we backport in a way that doesn't break existing code by leaving the two methods in `Tcp.WriteCommand` and implementing them with a hard `def ack = NoAck` and `def wantsAck = false` in `Tcp.CompoundWrite`.