+act new `Bytes` as superclass of ByteString, adding FileBytes as sibling

An abstraction of bytes either from a JVM heap buffer (ByteString), or a slice
of a file on the file-system.

It provides operations to slice bytes efficiently and usually without
having to load bytes from files into memory or by copying data around. Operations
that actually load bytes from files are marked as such (TODO: currently none, but we'll
need some later on, e.g. if a transformation like gzip encoding has to be applied).

Bytes instances are produced by using the given constructors in the companion object and
by slicing the results.

Bytes instances are usually consumed by pattern-matching over its structure. This way
bytes from files can be read in the most efficient way possible for the given purpose
(e.g. by using `FileChannel.transferTo` where applicable).

The complete sealed type hierarchy looks like this:

Bytes
|-- ByteString
|-- FileBytes

The divide between ByteString/FileBytes currently also exists in Akka IO's
Tcp WriteCommands: There's both Tcp.Write and Tcp.WriteFile. With this change
the abstraction gets lifted one layer up into the ByteString API and we can
therefore get rid of those abstractions in the IO API in the next step.
!act get rid of SimpleWriteCommand and WriteFile by using new Bytes abstraction
!act get rid off Tcp.CompoundWrite in expectancy of better support through future streams
=hco don't use long/int/char as identifiers
Merge branch 'w/new-bytes' into w/akka-http-core
=hco replace stub HttpData by akka.util.Bytes