TcpConnection: abstract PendingWrite logic to make room for other types of writing
Tcp: abstract writing into WriteCommand to make place for other kinds of writing
Tcp: introduce WriteFile to support zero-copy writing of files (using FileChannel.transferTo), fixes #2896
Tcp: cosmetic changes and more checks

 * whitespace
 * Write.Empty => Write.empty
 * check requirements
 * better 0-checks
TcpConnection: add `file-io-transferTo-limit` config parameter
TcpConnection: don't lose direct buffers when ByteString operations fail
TcpConnection: forward exception from WriteFile dispatcher to the actor for proper handling
Merge pull request #1321 from spray/wip-IO-WriteFile-rebased

Tcp: introduce WriteFile to support zero-copy writing of files, fixes #2896