! io, can, util: Publish SSLSessionEstablished event from SslTlsSupport upon successful SSL handshaking
! can, http: Add SSLSessionInfo header to requests on server and responses on client
+ can: Add explicit suppression of Content-Type header

The NoContentType ContentType is ignored in response rendering.
The NoMediaType MediaType is encapsuled by NoContentType.
Merge pull request #493 from fsvehla/fsvehla_no_content_type_header

+ can: Add explicit suppression of Content-Type header
Merge pull request #487 from mpilquist/client-cert-access

! io, can, http: Provide information about the SSL session that an HttpMessage is received over
= httpx: optimize default FormDataMarshaller
+ httpx: change charset of default Content-Type in MultiPartUnmarshaller to UTF-8

Also makes specification of custom default charsets easy by adding `MultipartUnmarshallers.multipartContentUnmarshaller`.
= io: suppress logging of `event pipeline: dropped SSLSessionEstablished` message in SslTlsSupportSpec
! 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
+ http: extend and improve new HttpData abstraction
+ httpx: add default marshallers for ByteString and HttpData
+ routing: upgrade `autoChunk` directive, add `autoChunkFileBytes` directive
! routing: have `encodeResponse` automatically tie in `autoChunkFileBytes`

 In order to prevent `encodeResponse` from having to load the complete file content for compression it needs to automatically apply `autoChunkFileBytes` to its inner route. However, since the latter requires an implicit ActorRefFactory (for being able to spawn the chunk streaming actor underneath) we need to refactor `encodeResponse` to a magnet based signature.
 This change trickles down to all depending directives, most importantly `compressResponse`. The "no-paren overload" of `compressResponse` needs to go (since it cannot be magnetized), which opens up the chance to unify `compressResponse` and `compresseResponseWith`.
 For symmetry we also change `decompressRequest` accordingly.
= routing: upgrade FileAndResourceDirectives, also fixes #412 and #413