!hco make Marshaller(s) covariant in result type
!hco #15915 introduce more shades of HttpEntities

The introduction of BodyParts again showed that not all entity types are
useful for every kind of context. There are now these contexts where
HttpEntities are used:
 - requests
 - responses
 - body parts

And several kinds of entities:
 - Strict
 - Default
 - Chunked
 - CloseDelimited
 - IndefiniteLength

To increase type safety of the API marker-interfaces are introduced defining
which kinds of entities can be used in which contexts:
 - RequestEntity: Strict, Default, Chunked
 - ResponseEntity: Strict, Default, Chunked, CloseDelimited
 - BodyPartEntity: Strict, Default, IndefiniteLength

Also, to be able still to provide abstractions over some kinds of entities
additional auxiliary interfaces were necessary:
 - MessageEntity = RequestEntity >: ResponseEntity: Strict, Default, Chunked (type alias for RequestEntity)
 - UniversalEntity = RequestEntity with ResponseEntity with BodyPartEntity = Strict, Default
Merge pull request #15941 from spray/w/15915-restructure-HttpEntity-hierarchy

!hco #15915 introduce more shades of HttpEntities
=str #15948 Make Broadcast cancel upstream when all downstreams have canceled
Merge pull request #15949 from akka/wip-15948-fanout-cancel-upstream-bug-ban

=str #15948 Make Broadcast cancel upstream when all downstreams have canceled
!htc Remove obsolete ProtectedHeaderCreation construct
!htc Tighten up header model some more, update spec links
=htc Improve handling of `Transfer-Encoding` header, closes #15490