=str - Various Flow and FlowMaterializer improvements

THIS IS A WIP-BRANCH/PR for discussion and improvement, DO NOT MERGE YET


  - Switches from using size-of-1/2 Vectors to using Lists
  - Fixes an issue where processorForNode wouldn't use the dispatcher form the settings
  - Adds a dedicated Collect fusion op
  - Adds various simplifications to ActorBasedFlowMaterializer
  - Adds FIXMEs where appropriate
  - Switches `grouped` to use a VectorBuilder
  - Adds support for `scan`
> Can you explain this sentence?

Yes, of course, sorry for being vague, I guess my question is why the implementations are so different given that they (should) do almost exactly the same thing:

https://github.com/akka/akka/blob/release-2.3-dev/akka-stream/src/main/scala/akka/stream/impl/IterablePublisher.scala#L44

https://github.com/akka/akka/blob/release-2.3-dev/akka-stream/src/main/scala/akka/stream/impl/ActorPublisher.scala#L134

IteratorPublisher looks more polished, but I have removed that from my PR here since we don't do IteratorPublishers anymore, but the IterablePublisher had some issues, so what do you think, should we base the IterablePublisher on the implementation of IteratorPublisher or should I keep IterablePublisher as is and fix the remaining issues with it?