=str #15755 #15756 First stab at input/output factories

* New naming based on Source and Sink
=str #15755 #15756 correct variance annotations

- make HasNoX into pure marker traits
- make materialization type-safe
- remove casting when using EmptyPublisher
=str #15755 mandate materializer for IterableSource

* Source attach to top flow subscriber
=str #15755 implement Sources

* Implement IteratorSource
* and add tests for IterableSource and IteratorSource
* Implement ThunkSource
* Implement FutureSource
* Implement TickSource
=str #15756 Implement Sinks

* Implement FutureSink
* also, make PublisherSink an object
* Implement OnCompleteSink
* Implement ForeachSink
* Implement SubscriberSink
=str #15755 #15756 Some cleanup
=str #15755 #15756 rework Source/Sink materialization

The philosophy is that the FlowMaterializer has complete control over
how it interprets the AST, no restrictions. Therefore it only involves
one specified method: materialize() which returns a MaterializedFlow.
Within the ActorBasedFlowMaterializer we materialize Sources and Sinks
that implement the specified SimpleSource/SourceWithKey interfaces (same
for Sinks), others are not supported. These traits are extensible and
they require that an ActorBasedFlowMaterializer is passed into the
factory methods. Other materializers can of course interpret these AST
nodes differently, or they can use the actor-based facilities by
creating a suitable materializer for them to use.

This means that everything is fully extensible, but the infrastructure
we provide concretely for ourselves is built exactly for that and
nothing more. Overgeneralization would just lead nowhere.

Also made FutureSink isActive and implement it using a light-weight
Subscriber instead of a Flow/Transformer.
Merge pull request #15790 from akka/wip-15755-15756-source-sink-patriknw

=str #15755 #15756 source and sink
!str #15604: Removal of default fanout behavior
Merge pull request #15793 from drewhk/wip-15604-no-fanout-drewhk

!str #15604: Removal of default fanout
!hco #15800 mark `Content-Length` header private for now

Instances will only created during HTTP message parsing and its value will
then be provided as a field of one of the HttpEntity subclasses.
=hco fail pending tests faster
=hco #15682 replace default toLowerCase calls with one using Locale.ROOT
Merge pull request #15826 from spray/w/fix-several-small-issues

Fixes for several small issues #15682, #15800
=str #15740 hookup filter and collect

* copy tests from old DSL
* adapt ChainSetup to the new DSL
=str #15735 Prototype of FlowGraph

Add documentation
Merge pull request #15805 from akka/wip-15735-flow-graph-research-patriknw

Prototype of FlowGraph
Merge pull request #15834 from 2m/wip-hook-filter-collect

=str #15740 hookup filter and collect
WIP on bringing back the reactive streams TCK to akka-streams
Currently uses the repo.akka.io/snapshots released version.

The goal is to verify our impl is up to date with the spec,
and validate the spec at the same time. Once the TCK is released,
this branch can be merged and pointed towards `0.4.0`.
WIP, moved tests to separate package
WIP validated 3.9 for Publishers, added constants class for error msgs
WIP on covering every publisher/subscriber with the TCK