New Bytes abstraction V2

As discussed in #1900, the proposal was much simplified by getting rid of any kind of `CompoundBytes` (in favor of a future stream based solution).

The first commit introduces the new abstraction as a superclass of ByteString. The second commit unifies `Tcp.WriteFile` and `Tcp.Write` into a single `Tcp.Write` with a `data: Bytes` parameter. The third commit goes one step further and also removes `Tcp.CompoundWrite`.

While the first two commits preserve all functionality under a changed API, the third commit basically reverts the `TcpConnection` back to a state without CompoundWrites (i.e. before #1709). The consensus seemed to be that compounding wasn't a strict necessity for users of TcpConnection before (although they simplified things e.g. in spray), and won't be needed once there's a stream based solution which would take care of any backpressure/buffering issues.