! io: add support for compound write commands (Tcp.CompoundWrite)

Most of this addition only affects the non-public parts of akka-io, however, the `ack` and `wantsAck` methods that were so far defined on the `Tcp.WriteCommand` type have now been moved to the new `Tcp.CompactWriteCommand` type.
= http: add dependency on spray-util, remove duplication
+ http: extend Rendering with `~~%` operator for rendering hex ints and longs
! http: add small extensions to Uri model

Specifically:
- additional `charset` parameter on `Uri.Host.apply` and `Uri.Query.apply`
- new method: Uri.Query::toMap
! http: introduce `HttpData` model replacing the byte array in `HttpBody` and `MessageChunk`, closes #365

So far the HTTP model for message entities and chunks was based on "raw" byte arrays thereby violating the immutability "standard".
 With this change we introduce a dedicated model for HTTP binary data called `HttpData`, which also adds support for file-based (off-memory) data.

 We use the opportunity of this breaking change to refactor the `HttpEntity` model.
 `EmptyEntity` and `HttpBody` are gone and replaced with `HttpEntity.Empty` and `HttpEntity.NonEmpty`.
 Additionally `MessageChunk::bodyAsString` is gone. Use `chunk.data.asString` instead.
! can: upgrade to new HttpEntity / HttpData model

 The breaking change here is the evolution of the `response-size-hint` and `request-size-hint` config settings to `response-header-size-hint` and `request-header-size-hint` respectively (since spray-can now only renders the HTTP message headers into a `Tcp.Write` command and can forward the message entity untouched to the IO layer).
= several: upgrade all other modules and examples to new HttpEntity / HttpData model